[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:       2010-03-31 19:48:23
Message-ID: 20100331194823.6AEE7AC888 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1109701 by mart:

move the popup before adjusting borders, makes it a bit less jumpy


 M  +28 -16    dialog.cpp  


--- trunk/KDE/kdelibs/plasma/dialog.cpp #1109700:1109701
@@ -86,6 +86,7 @@
     void checkBorders(bool updateMaskIfNeeded);
     void updateResizeCorners();
     int calculateWidthForHeightAndRatio(int height, qreal ratio);
+    Plasma::Applet *applet();
 
     Plasma::Dialog *q;
 
@@ -161,22 +162,14 @@
     checkBorders(true);
 }
 
-void DialogPrivate::checkBorders(bool updateMaskIfNeeded)
+Plasma::Applet *DialogPrivate::applet()
 {
-    if (resizeChecksWithBorderCheck) {
-        background->resizeFrame(q->size());
-    }
-
-    QGraphicsWidget *graphicsWidget = graphicsWidgetPtr.data();
-    const FrameSvg::EnabledBorders currentBorders = background->enabledBorders();
-    FrameSvg::EnabledBorders borders = FrameSvg::AllBorders;
-
-    Extender *extender = qobject_cast<Extender*>(graphicsWidget);
+    Extender *extender = qobject_cast<Extender*>(graphicsWidgetPtr.data());
     Plasma::Applet *applet = 0;
     if (extender) {
         applet = extender->d->applet;
-    } else if (graphicsWidget) {
-        QObject *pw = graphicsWidget;
+    } else if (graphicsWidgetPtr) {
+        QObject *pw = graphicsWidgetPtr.data();
 
         while ((pw = pw->parent())) {
             applet = dynamic_cast<Plasma::Applet *>(pw);
@@ -185,7 +178,22 @@
             }
         }
     }
+    return applet;
+}
 
+void DialogPrivate::checkBorders(bool updateMaskIfNeeded)
+{
+    if (resizeChecksWithBorderCheck) {
+        background->resizeFrame(q->size());
+    }
+
+    QGraphicsWidget *graphicsWidget = graphicsWidgetPtr.data();
+    const FrameSvg::EnabledBorders currentBorders = background->enabledBorders();
+    FrameSvg::EnabledBorders borders = FrameSvg::AllBorders;
+
+    Extender *extender = qobject_cast<Extender*>(graphicsWidget);
+    Plasma::Applet *applet = this->applet();
+
     //used to remove borders at the edge of the desktop
     QDesktopWidget *desktop = QApplication::desktop();
     QRect avail = desktop->availableGeometry(desktop->screenNumber(q));
@@ -199,10 +207,6 @@
 
     //decide about disabling the border attached to the panel
     if (applet) {
-        Plasma::Corona *corona = qobject_cast<Plasma::Corona *>(applet->scene());
-        if (corona) {
-            q->move(corona->popupPosition(applet, q->size()));
-        }
         background->getMargins(leftWidth, topHeight, rightWidth, bottomHeight);
 
         switch (applet->location()) {
@@ -561,6 +565,14 @@
         d->view->setSceneRect(sceneRect);
         d->view->centerOn(graphicsWidget);
     }
+
+    Plasma::Applet *applet = d->applet();
+    if (applet) {
+        Plasma::Corona *corona = qobject_cast<Plasma::Corona *>(applet->scene());
+        if (corona) {
+            move(corona->popupPosition(applet, size()));
+        }
+    }
 }
 
 void DialogPrivate::updateResizeCorners()
[prev in list] [next in list] [prev in thread] [next in thread] 

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