[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: kicker patch
From: Dirk Mueller <mueller () kde ! org>
Date: 2000-09-20 18:32:18
[Download RAW message or body]
Hi,
please review the following patch:
It speeds up kicker starting by optimizing away unnecessary icon reloads and
adds also a delayed construction of the main kmenu.
Dirk
["patch.kicker" (text/plain)]
Index: containerarea.cpp
===================================================================
RCS file: /home/kde/kdebase/kicker/core/containerarea.cpp,v
retrieving revision 1.13
diff -u -2 -d -p -b -r1.13 containerarea.cpp
Index: panelbutton.cpp
===================================================================
RCS file: /home/kde/kdebase/kicker/core/panelbutton.cpp,v
retrieving revision 1.9
diff -u -2 -d -p -b -r1.9 panelbutton.cpp
--- panelbutton.cpp 2000/09/20 10:00:58 1.9
+++ panelbutton.cpp 2000/09/20 18:29:59
@@ -269,5 +269,4 @@ PanelKButton::PanelKButton(QWidget *pare
topMenu = new PanelKMenu(this);
connect(topMenu, SIGNAL(aboutToHide()), SLOT(slotRelease()));
- topMenu->initialize(); // Get this ready now.
connect(this, SIGNAL(pressed()), SLOT(slotExecMenu()));
// client menu stuff
@@ -337,5 +336,4 @@ void PanelKButton::slotExecMenu()
{
topMenu->hide();
- topMenu->initialize();
topMenu->popup(getPopupPosition(topMenu));
}
@@ -344,5 +342,4 @@ void PanelKButton::slotExecMenuAt(int x,
{
topMenu->hide();
- topMenu->initialize();
topMenu->popup(QPoint(x,y));
}
Index: panelbuttonbase.cpp
===================================================================
RCS file: /home/kde/kdebase/kicker/core/panelbuttonbase.cpp,v
retrieving revision 1.5
diff -u -2 -d -p -b -r1.5 panelbuttonbase.cpp
--- panelbuttonbase.cpp 2000/08/30 14:33:14 1.5
+++ panelbuttonbase.cpp 2000/09/20 18:29:59
@@ -77,33 +77,40 @@ void PanelButtonBase::setTile(const QStr
void PanelButtonBase::setIcon(const QString & nm, const QString & fallback)
{
- KIcon::StdSizes sz = // Er, enum names should not be plural
+ KIcon::StdSizes newsz =
width() < 32 ? KIcon::SizeSmall :
(width() < 48 ? KIcon::SizeMedium : KIcon::SizeLarge);
+ KIcon::StdSizes oldsz = _icon.width() < 32 ? KIcon::SizeSmall :
+ (_icon.width() < 48 ? KIcon::SizeMedium : KIcon::SizeLarge);
+ if(oldsz == newsz)
+ return;
+
KIconLoader * ldr = KGlobal::iconLoader();
- _icon = ldr->loadIcon(nm, KIcon::Desktop, sz, KIcon::DefaultState, 0L, true);
+ _icon = ldr->loadIcon(nm, KIcon::Desktop, newsz, KIcon::DefaultState, 0L, true);
if (_icon.isNull())
- _icon = ldr->loadIcon(fallback, KIcon::Desktop, sz, KIcon::DefaultState);
+ _icon = ldr->loadIcon(fallback, KIcon::Desktop, newsz, KIcon::DefaultState);
- _iconh = ldr->loadIcon(nm, KIcon::Desktop, sz, KIcon::ActiveState, 0L, true);
+ _iconh = ldr->loadIcon(nm, KIcon::Desktop, newsz, KIcon::ActiveState, 0L, true);
if (_iconh.isNull())
- _iconh = ldr->loadIcon(fallback, KIcon::Desktop, sz, KIcon::ActiveState);
-
- repaint();
+ _iconh = ldr->loadIcon(fallback, KIcon::Desktop, newsz, KIcon::ActiveState);
}
void PanelButtonBase::setIcon(const KURL & u)
{
- KIcon::StdSizes sz =
+ KIcon::StdSizes newsz =
width() < 32 ? KIcon::SizeSmall :
(width() < 48 ? KIcon::SizeMedium : KIcon::SizeLarge);
- _icon = KMimeType::pixmapForURL(u, 0, KIcon::Desktop, sz, KIcon::DefaultState);
- _iconh = KMimeType::pixmapForURL(u, 0, KIcon::Desktop, sz, KIcon::ActiveState);
+ KIcon::StdSizes oldsz = _icon.width() < 32 ? KIcon::SizeSmall :
+ (_icon.width() < 48 ? KIcon::SizeMedium : KIcon::SizeLarge);
- repaint();
+ if(oldsz == newsz)
+ return;
+
+ _icon = KMimeType::pixmapForURL(u, 0, KIcon::Desktop, newsz, KIcon::DefaultState);
+ _iconh = KMimeType::pixmapForURL(u, 0, KIcon::Desktop, newsz, KIcon::ActiveState);
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic