[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