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

List:       kde-commits
Subject:    KDE/kdelibs/plasma
From:       Marco Martin <notmart () gmail ! com>
Date:       2009-02-16 21:45:23
Message-ID: 1234820723.436454.23063.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 927141 by mart:

theory: the desktop breakage could happen because the panel overlaps the
desktop for a while, making containment()->view() or
corona::containmentfordesktop() fails, leaving the desktop view without
a containment
try to reposition the panel before a vertical movement, it should
prevent the panel to go into the desktop for an instant
CCBUG:176280


 M  +16 -10    containment.cpp  


--- trunk/KDE/kdelibs/plasma/containment.cpp #927140:927141
@@ -1177,20 +1177,26 @@
 {
     //FIXME if the applet is moved to another containment we need to unfocus it
 
+    QVariant newValue = Applet::itemChange(change, value);
+
     if (isContainment() && !ContainmentPrivate::s_positioning &&
-        (change == QGraphicsItem::ItemSceneHasChanged || change == \
                QGraphicsItem::ItemPositionHasChanged)) {
-        switch (d->type) {
-            case PanelContainment:
-            case CustomPanelContainment:
-                d->positionPanel();
-                break;
-            default:
-                d->positionContainments();
-                break;
+        (change == QGraphicsItem::ItemSceneChange || change == \
QGraphicsItem::ItemPositionChange)) { +
+        //if the position will be actually changed, reposition before the change
+        if (newValue == value) {
+          switch (d->type) {
+              case PanelContainment:
+              case CustomPanelContainment:
+                  d->positionPanel();
+                  break;
+              default:
+                  d->positionContainments();
+                  break;
+          }
         }
     }
 
-    return Applet::itemChange(change, value);
+    return newValue;
 }
 
 void Containment::enableAction(const QString &name, bool enable)


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

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