[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