[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/applets/pager
From:       Alexis Ménard <menard () kde ! org>
Date:       2008-10-07 21:33:33
Message-ID: 1223415213.103549.29976.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 869004 by menard:

Make the pager cache his colorscheme instead of calling KColorScheme at each paint \
event that takes too much time. Obviously we have to fix KColorScheme too.

 M  +27 -4     pager.cpp  
 M  +5 -1      pager.h  


--- trunk/KDE/kdebase/workspace/plasma/applets/pager/pager.cpp #869003:869004
@@ -58,6 +58,7 @@
       m_rows(2),
       m_columns(0),
       m_hoverIndex(-1),
+      m_colorScheme(0),
       m_dragId(0),
       m_dirtyDesktop(-1),
       m_dragStartDesktop(-1),
@@ -118,11 +119,18 @@
     if ( !m_desktopLayoutOwner->claim( false ))
         lostDesktopLayoutOwner();
 
+    connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), this, \
SLOT(themeRefresh())); +
     recalculateGeometry();
 
     m_currentDesktop = KWindowSystem::currentDesktop();
 }
 
+Pager::~Pager()
+{
+    delete m_colorScheme;
+}
+
 void Pager::constraintsEvent(Plasma::Constraints constraints)
 {
     if (constraints & Plasma::SizeConstraint) {
@@ -144,6 +152,15 @@
     }
 }
 
+KColorScheme *Pager::colorScheme()
+{
+    if (!m_colorScheme) {
+        m_colorScheme = new KColorScheme(QPalette::Active, KColorScheme::View, \
Plasma::Theme::defaultTheme()->colorScheme()); +    }
+
+    return m_colorScheme;
+}
+
 void Pager::createMenu()
 {
     QAction* configureDesktop = new QAction(SmallIcon("configure"),i18n("&Configure \
Desktops..."), this); @@ -830,7 +847,7 @@
     Q_UNUSED( option );
     Q_UNUSED( contentsRect );
 
-    KColorScheme plasmaColorTheme = KColorScheme(QPalette::Active, \
KColorScheme::View, Plasma::Theme::defaultTheme()->colorScheme()); +    KColorScheme* \
plasmaColorTheme = colorScheme();  painter->setFont(KGlobalSettings::taskbarFont());
 
     // Desktop background
@@ -839,7 +856,7 @@
     hoverColor.setAlpha(64);
 
     // Inactive windows
-    QColor drawingColor = \
plasmaColorTheme.foreground(KColorScheme::InactiveText).color(); +    QColor \
drawingColor = plasmaColorTheme->foreground(KColorScheme::InactiveText).color();  \
drawingColor.setAlpha(50);  QBrush windowBrush(drawingColor);
     // Inactive windows Active desktop
@@ -847,7 +864,7 @@
     QBrush windowBrushActiveDesk(drawingColor);
 
     // Inactive window borders
-    drawingColor = plasmaColorTheme.foreground(KColorScheme::NeutralText).color();
+    drawingColor = plasmaColorTheme->foreground(KColorScheme::NeutralText).color();
     drawingColor.setAlpha(238);
     QPen windowPen(drawingColor);
 
@@ -951,7 +968,7 @@
                 defaultTextColor.setAlphaF(1);
                 drawingPen = QPen(defaultTextColor);
             } else {
-                drawingPen = \
QPen(plasmaColorTheme.foreground(KColorScheme::InactiveText).color()); +              \
drawingPen = QPen(plasmaColorTheme->foreground(KColorScheme::InactiveText).color());  \
}  
             painter->setPen(drawingPen);
@@ -993,4 +1010,10 @@
     return QRect( x - r.width() / 2, y - r.height() / 2, r.width(), r.height());
 }
 
+void Pager::themeRefresh()
+{
+    delete m_colorScheme;
+    m_colorScheme = 0;
+}
+
 #include "pager.moc"
--- trunk/KDE/kdebase/workspace/plasma/applets/pager/pager.h #869003:869004
@@ -30,6 +30,7 @@
 
 class KDialog;
 class KSelectionOwner;
+class KColorScheme;
 
 namespace Plasma
 {
@@ -41,7 +42,7 @@
     Q_OBJECT
     public:
         Pager(QObject *parent, const QVariantList &args);
-
+        ~Pager();
         void init();
         void paintInterface(QPainter *painter, const QStyleOptionGraphicsItem \
*option,  const QRect &contents);
@@ -51,6 +52,7 @@
     public slots:
         void recalculateGeometry();
         void recalculateWindowRects();
+        void themeRefresh();
 
     protected slots:
         virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
@@ -82,6 +84,7 @@
 
     protected:
         void createMenu();
+        KColorScheme *colorScheme();
         QRect fixViewportPosition( const QRect& r );
         void createConfigurationInterface(KConfigDialog *parent);
         bool posOnDesktopRect(const QRectF& r, const QPointF& pos);
@@ -126,6 +129,7 @@
         QList<QAction*> m_actions;
         KSelectionOwner* m_desktopLayoutOwner;
         Plasma::PanelSvg *m_background;
+        KColorScheme *m_colorScheme;
 
         // dragging of windows
         QRect m_dragOriginal;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic