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

List:       kde-commits
Subject:    branches/KDE/4.4/kdelibs/plasma
From:       Anne-Marie Mahfouf <annma () kde ! org>
Date:       2010-03-06 14:30:57
Message-ID: 1267885857.818871.24498.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1100005 by annma:

backport Aaron's fixe r1099727  for 229566
CCBUG=229566


 M  +1 -1      extenders/extender.cpp  
 M  +14 -12    extenders/extenderitem.cpp  
 M  +10 -0     private/extenderitemmimedata.cpp  
 M  +5 -0      private/extenderitemmimedata_p.h  


--- branches/KDE/4.4/kdelibs/plasma/extenders/extender.cpp #1100004:1100005
@@ -566,7 +566,7 @@
 
 void ExtenderPrivate::removeExtenderItem(ExtenderItem *item)
 {
-    attachedExtenderItems.removeOne(item);
+    attachedExtenderItems.removeAll(item);
 
     //collapse the popupapplet if the last item is removed.
     if (!q->attachedItems().count()) {
--- branches/KDE/4.4/kdelibs/plasma/extenders/extenderitem.cpp #1100004:1100005
@@ -263,10 +263,11 @@
     //and notify the applet of the item being detached, after the config has been moved.
     emit d->extender->itemDetached(this);
 
+    setParentItem(extender);
+    setParent(extender);
     d->extender = extender;
 
     //change parent.
-    setParentItem(extender);
     extender->d->addExtenderItem(this, pos);
 
     //cancel the timer.
@@ -587,7 +588,7 @@
     pixmap.fill(Qt::transparent);
     QPainter p(&pixmap);
 
-    //the following is necesarry to avoid having an offset when rendering the widget into the
+    //the following is necessary to avoid having an offset when rendering the widget into the
     //pixmap.
     view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@@ -598,9 +599,10 @@
     view.setSceneRect(sceneBoundingRect());
     view.render(&p, QRectF(QPointF(0, 0), pixmap.size()), QRect(QPoint(0, 0), screenSize));
 
-    //create the necesarry mimedata.
+    //create the necessary mimedata.
     ExtenderItemMimeData *mimeData = new ExtenderItemMimeData();
     mimeData->setExtenderItem(this);
+    mimeData->setPointerOffset(d->mousePos);
 
     //Hide empty internal extender containers when we drag the last item away. Avoids having
     //an ugly empty applet on the desktop temporarily.
@@ -610,10 +612,6 @@
         extenderApplet->formFactor() != Plasma::Vertical) {
         kDebug() << "leaving the internal extender container, so hide the applet and it's handle.";
         extenderApplet->hide();
-        AppletHandle *handle = dynamic_cast<AppletHandle*>(extenderApplet->parentItem());
-        if (handle) {
-            handle->hide();
-        }
     }
 
     ExtenderGroup *group = qobject_cast<ExtenderGroup*>(this);
@@ -632,17 +630,24 @@
     Qt::DropAction action = drag->exec();
 
     corona->removeOffscreenWidget(this);
+    d->dragStarted = false;
 
     if (!action || !drag->target()) {
         //we weren't moved, so reinsert the item in our current layout.
+        //TODO: make it into a stand-alone window?
+        d->themeChanged();
         d->extender->itemAddedEvent(this, curPos);
+        if (extenderApplet) {
+            extenderApplet->show();
+        }
+
+        d->extender->itemAddedEvent(this, curPos);
     }
 
     if (isGroup() && !collapsedGroup) {
         group->expandGroup();
     }
 
-    d->dragStarted = false;
 }
 
 void ExtenderItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
@@ -845,12 +850,9 @@
 {
     if (dragStarted) {
         background->setImagePath("opaque/widgets/extender-background");
+        background->setEnabledBorders(FrameSvg::AllBorders);
     } else {
         background->setImagePath("widgets/extender-background");
-    }
-    if (dragStarted) {
-        background->setEnabledBorders(FrameSvg::AllBorders);
-    } else {
         background->setEnabledBorders(extender->enabledBordersForItem(q));
     }
     background->getMargins(bgLeft, bgTop, bgRight, bgBottom);
--- branches/KDE/4.4/kdelibs/plasma/private/extenderitemmimedata.cpp #1100004:1100005
@@ -51,6 +51,16 @@
     m_extenderItem = item;
 }
 
+void ExtenderItemMimeData::setPointerOffset(const QPoint &p)
+{
+    m_offset = p;
+}
+
+QPoint ExtenderItemMimeData::pointerOffset() const
+{
+    return m_offset;
+}
+
 ExtenderItem *ExtenderItemMimeData::extenderItem() const
 {
     return m_extenderItem;
--- branches/KDE/4.4/kdelibs/plasma/private/extenderitemmimedata_p.h #1100004:1100005
@@ -21,6 +21,7 @@
 #define EXTENDERITEMMIMEDATA_H
 
 #include <QMimeData>
+#include <QPoint>
 
 namespace Plasma
 {
@@ -44,9 +45,13 @@
         ExtenderItem *extenderItem() const;
 
         static QString mimeType();
+        
+        void setPointerOffset(const QPoint &p);
+        QPoint pointerOffset() const;
 
     private:
         ExtenderItem *m_extenderItem;
+        QPoint m_offset;
 };
 
 } // namespace Plasma
[prev in list] [next in list] [prev in thread] [next in thread] 

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