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

List:       kde-commits
Subject:    branches/work/plasma-desktoplayout-4.2/kdebase-workspace-plasma/containments/desktop
From:       Ambroz Bizjak <ambro () b4ever ! net>
Date:       2009-01-17 16:54:37
Message-ID: 1232211277.049045.16050.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 912527 by abizjak:

Store preferred position only instead of geometry.
Check borders after resizing an applet and don't update the preferred position.
This makes sure than an applet that was enlarged and pushed inside the screen because \
it would be  too big is put back to the original position when it's shrinked.


 M  +4 -4      desktoplayout.cpp  
 M  +1 -1      desktoplayout.h  
 M  +11 -9     itemspace.cpp  
 M  +1 -1      itemspace.h  


--- branches/work/plasma-desktoplayout-4.2/kdebase-workspace-plasma/containments/desktop/desktoplayout.cpp \
#912526:912527 @@ -46,7 +46,7 @@
     ItemSpace::ItemSpaceItem spaceItem;
     spaceItem.pushBack = pushBack;
     spaceItem.animateMovement = false;
-    spaceItem.preferredGeometry = logicalGeom;
+    spaceItem.preferredPosition = logicalGeom.topLeft();
     spaceItem.lastGeometry = logicalGeom;
     spaceItem.user = QVariant(key);
 
@@ -89,7 +89,7 @@
             ItemSpace::ItemSpaceItem spaceItem;
             spaceItem.pushBack = false;
             spaceItem.animateMovement = false;
-            spaceItem.preferredGeometry = QRectF(position, itemSize);
+            spaceItem.preferredPosition = position;
             spaceItem.lastGeometry = QRectF(position, itemSize);
             spaceItem.user = QVariant(-1);
 
@@ -132,13 +132,13 @@
     return itemSpace.m_groups[group].m_groupItems[item].pushBack;
 }
 
-QRectF DesktopLayout::getPreferredGeometry(int index)
+QPointF DesktopLayout::getPreferredPosition(int index)
 {
     int group;
     int item;
     itemSpace.locateItemByPosition(index, &group, &item);
 
-    return itemSpace.m_groups[group].m_groupItems[item].preferredGeometry;
+    return itemSpace.m_groups[group].m_groupItems[item].preferredPosition;
 }
 
 QRectF DesktopLayout::getLastGeometry(int index)
--- branches/work/plasma-desktoplayout-4.2/kdebase-workspace-plasma/containments/desktop/desktoplayout.h \
#912526:912527 @@ -37,7 +37,7 @@
     void addItem(QGraphicsWidget *item, bool pushBack = true, bool position = true);
 
     bool getPushBack(int index);
-    QRectF getPreferredGeometry(int index);
+    QPointF getPreferredPosition(int index);
     QRectF getLastGeometry(int index);
 
     /**
--- branches/work/plasma-desktoplayout-4.2/kdebase-workspace-plasma/containments/desktop/itemspace.cpp \
#912526:912527 @@ -126,15 +126,16 @@
               cannot push items away from their preferred positions.
             */
             if (item.pushBack) {
+                QRectF preferredGeometry = QRectF(item.preferredPosition, \
item.lastGeometry.size());  // left/right
-                push = item.preferredGeometry.left() - item.lastGeometry.left();
+                push = preferredGeometry.left() - item.lastGeometry.left();
                 if (push > 0) {
                     performPush(groupId, DirRight, push, NoPower);
                 } else if (push < 0) {
                     performPush(groupId, DirLeft, -push, NoPower);
                 }
                 // up/down
-                push = item.preferredGeometry.top() - item.lastGeometry.top();
+                push = preferredGeometry.top() - item.lastGeometry.top();
                 if (push > 0) {
                     performPush(groupId, DirDown, push, NoPower);
                 } else if (push < 0) {
@@ -162,7 +163,7 @@
         for (int itemId = 0; itemId < group.m_groupItems.size(); itemId++) {
             ItemSpaceItem &item = group.m_groupItems[itemId];
 
-            item.preferredGeometry.adjust(offset.x(), offset.y(), offset.x(), \
offset.y()); +            item.preferredPosition += offset;
             item.lastGeometry.adjust(offset.x(), offset.y(), offset.x(), \
offset.y());  }
     }
@@ -446,19 +447,20 @@
 
         // limit push to not push the item away from its preferred position
         if (!(itemSpace->m_power & PushAwayFromPreferred) && item.pushBack) {
+            QRectF preferredGeometry = QRectF(item.preferredPosition, \
item.lastGeometry.size());  qreal limit;
             switch (itemSpace->m_direction) {
                 case DirLeft:
-                    limit = origGeom.left() - item.preferredGeometry.left();
+                    limit = origGeom.left() - preferredGeometry.left();
                     break;
                 case DirRight:
-                    limit = -(origGeom.left() - item.preferredGeometry.left());
+                    limit = -(origGeom.left() - preferredGeometry.left());
                     break;
                 case DirUp:
-                    limit = origGeom.top() - item.preferredGeometry.top();
+                    limit = origGeom.top() - preferredGeometry.top();
                     break;
                 case DirDown:
-                    limit = -(origGeom.top() - item.preferredGeometry.top());
+                    limit = -(origGeom.top() - preferredGeometry.top());
                     break;
             }
             limit = qMax(qreal(0.0), limit);
@@ -684,7 +686,7 @@
 
     unlinkItem(groupIndex, itemInGroup);
 
-    copy.preferredGeometry = newGeom;
+    copy.preferredPosition = newGeom.topLeft();
     copy.lastGeometry = newGeom;
     linkItem(copy);
 
@@ -849,8 +851,8 @@
     }
 
     resizeItem.lastGeometry = newGeom;
-    resizeItem.preferredGeometry = newGeom;
 
+    checkBorders();
     checkPreferredPositions();
 }
 
--- branches/work/plasma-desktoplayout-4.2/kdebase-workspace-plasma/containments/desktop/itemspace.h \
#912526:912527 @@ -51,7 +51,7 @@
     class ItemSpaceItem
     {
       public:
-        QRectF preferredGeometry;
+        QPointF preferredPosition;
         QRectF lastGeometry;
         bool pushBack : 1;
         bool animateMovement : 1;


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

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