KDE/kdebase/workspace/libs/plasma

Loic Marteau loic.marteau at gmail.com
Wed Jul 16 05:53:08 CEST 2008


SVN commit 833032 by lmarteau:

use the system size icons instead of an harcoded one
BUG:166646
CCMAIL:panel-devel at kde.org
if it should be backported to 4.1 branche can someone do this ? Thanks !


 M  +29 -21    applethandle.cpp  
 M  +2 -3      applethandle_p.h  


--- trunk/KDE/kdebase/workspace/libs/plasma/applethandle.cpp #833031:833032
@@ -29,6 +29,7 @@
 #include <KColorScheme>
 #include <KGlobalSettings>
 #include <KIcon>
+#include <KIconLoader>
 #include <KWindowSystem>
 
 #include <cmath>
@@ -53,6 +54,7 @@
       m_pressedButton(NoButton),
       m_containment(parent),
       m_applet(applet),
+      m_iconSize(16),
       m_opacity(0.0),
       m_anim(FadeIn),
       m_animId(0),
@@ -207,14 +209,15 @@
     QPainterPath path = handleRect(m_rect, 10, m_buttonsOnRight);
     painter->strokePath(path, m_gradientColor);
 
+    int iconMargin = m_iconSize / 2;
     int minHeight = minimumHeight();
     qreal h = m_rect.height();
     if (h > minHeight * 1.25) {
         QLinearGradient g(m_rect.topLeft(), m_rect.bottomLeft());
         // where the top icons stop
-        qreal firstStop = (ICON_SIZE + ICON_MARGIN) * 3 + ICON_MARGIN * 2;
+        qreal firstStop = (m_iconSize + iconMargin) * 3 + iconMargin * 2;
         // now between that and where the close icon is
-        firstStop = firstStop + (((h - (ICON_SIZE + ICON_MARGIN * 2)) - firstStop) * 0.7);
+        firstStop = firstStop + (((h - (m_iconSize + iconMargin * 2)) - firstStop) * 0.7);
         // now the ratio of the height
         firstStop /= h;
 
@@ -228,9 +231,9 @@
     painter->restore();
 
     //XXX this code is duplicated in the next function
-    QPointF basePoint = m_rect.topLeft() + QPointF((HANDLE_WIDTH - ICON_SIZE) / 2, ICON_MARGIN);
-    QPointF step = QPointF(0, ICON_SIZE + ICON_MARGIN);
-    QPointF separator = step + QPointF(0, ICON_MARGIN);
+    QPointF basePoint = m_rect.topLeft() + QPointF(HANDLE_MARGIN, iconMargin);
+    QPointF step = QPointF(0, m_iconSize + iconMargin);
+    QPointF separator = step + QPointF(0, iconMargin);
     //end duplicate code
 
     QPointF shiftC;
@@ -256,31 +259,32 @@
         break;
     }
 
-    painter->drawPixmap(basePoint + shiftM, KIcon("transform-scale").pixmap(ICON_SIZE, ICON_SIZE)); //FIXME no transform-resize icon
+    painter->drawPixmap(basePoint + shiftM, KIcon("transform-scale").pixmap(m_iconSize, m_iconSize)); //FIXME no transform-resize icon
 
     basePoint += step;
-    painter->drawPixmap(basePoint + shiftR, KIcon("transform-rotate").pixmap(ICON_SIZE, ICON_SIZE));
+    painter->drawPixmap(basePoint + shiftR, KIcon("transform-rotate").pixmap(m_iconSize, m_iconSize));
 
     if (m_applet && m_applet->hasConfigurationInterface()) {
         basePoint += step;
-        painter->drawPixmap(basePoint + shiftC, KIcon("configure").pixmap(ICON_SIZE, ICON_SIZE));
+        painter->drawPixmap(basePoint + shiftC, KIcon("configure").pixmap(m_iconSize, m_iconSize));
     }
 
-    basePoint = m_rect.bottomLeft() + QPointF((HANDLE_WIDTH - ICON_SIZE) / 2, 0) - step;
-    painter->drawPixmap(basePoint + shiftD, KIcon("edit-delete").pixmap(ICON_SIZE, ICON_SIZE));
+    basePoint = m_rect.bottomLeft() + QPointF(HANDLE_MARGIN, 0) - step;
+    painter->drawPixmap(basePoint + shiftD, KIcon("edit-delete").pixmap(m_iconSize, m_iconSize));
 
     painter->restore();
 }
 
 AppletHandle::ButtonType AppletHandle::mapToButton(const QPointF &point) const
 {
+    int iconMargin = m_iconSize / 2;
     //XXX this code is duplicated in the prev. function
-    QPointF basePoint = m_rect.topLeft() + QPointF((HANDLE_WIDTH - ICON_SIZE) / 2, ICON_MARGIN);
-    QPointF step = QPointF(0, ICON_SIZE + ICON_MARGIN);
-    QPointF separator = step + QPointF(0, ICON_MARGIN);
+    QPointF basePoint = m_rect.topLeft() + QPointF(HANDLE_MARGIN, iconMargin);
+    QPointF step = QPointF(0, m_iconSize + iconMargin);
+    QPointF separator = step + QPointF(0, iconMargin);
    //end duplicate code
 
-    QRectF activeArea = QRectF(basePoint, QSizeF(ICON_SIZE, ICON_SIZE));
+    QRectF activeArea = QRectF(basePoint, QSizeF(m_iconSize, m_iconSize));
 
     if (activeArea.contains(point)) {
         return ResizeButton;
@@ -298,7 +302,7 @@
         }
     }
 
-    activeArea.moveTop(m_rect.bottom() - activeArea.height() - ICON_MARGIN);
+    activeArea.moveTop(m_rect.bottom() - activeArea.height() - iconMargin);
     if (activeArea.contains(point)) {
         return RemoveButton;
     }
@@ -845,12 +849,13 @@
 
 int AppletHandle::minimumHeight()
 {
-    int requiredHeight =  ICON_MARGIN + //first margin
-                          (ICON_SIZE + ICON_MARGIN) * 4 + //XXX remember to update this if the number of buttons changes
-                          ICON_MARGIN;  //blank space before the close button
+    int iconMargin = m_iconSize / 2;
+    int requiredHeight =  iconMargin  + //first margin
+                          (m_iconSize + iconMargin ) * 4 + //XXX remember to update this if the number of buttons changes
+                          iconMargin ;  //blank space before the close button
 
     if (m_applet && m_applet->hasConfigurationInterface()) {
-        requiredHeight += (ICON_SIZE + ICON_MARGIN);
+        requiredHeight += (m_iconSize + iconMargin );
     }
 
     return requiredHeight;
@@ -858,7 +863,10 @@
 
 void AppletHandle::calculateSize()
 {
+    m_iconSize = IconSize(KIconLoader::Small);
+
     int handleHeight = minimumHeight();
+    int handleWidth = m_iconSize + 2 * HANDLE_MARGIN;
     int top = m_applet->contentsRect().top();
 
     if (handleHeight > m_applet->contentsRect().height()) {
@@ -870,10 +878,10 @@
 
     if (m_buttonsOnRight) {
         //put the rect on the right of the applet
-        m_rect = QRectF(m_applet->size().width(), top, HANDLE_WIDTH, handleHeight);
+        m_rect = QRectF(m_applet->size().width(), top, handleWidth, handleHeight);
     } else {
         //put the rect on the left of the applet
-        m_rect = QRectF(-HANDLE_WIDTH, top, HANDLE_WIDTH, handleHeight);
+        m_rect = QRectF(-handleWidth, top, handleWidth, handleHeight);
     }
 
     m_rect = m_applet->mapToParent(m_rect).boundingRect();
--- trunk/KDE/kdebase/workspace/libs/plasma/applethandle_p.h #833031:833032
@@ -71,9 +71,7 @@
         void leaveTimeout();
 
     private:
-        static const int HANDLE_WIDTH = 22;
-        static const int ICON_SIZE = 16;
-        static const int ICON_MARGIN = 8;
+        static const int HANDLE_MARGIN = 3;
 
         void calculateSize();
         ButtonType mapToButton(const QPointF &point) const;
@@ -90,6 +88,7 @@
 
         QRectF m_rect;
         QRectF m_totalRect;
+        int m_iconSize;
         ButtonType m_pressedButton;
         Containment *m_containment;
         Applet *m_applet;


More information about the Panel-devel mailing list