[Kst] [Bug 117838] difficult to determine new parent during drag

Andrew Walker arwalker at sumusltd.com
Thu Sep 6 22:26:51 CEST 2007


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=117838         
arwalker sumusltd com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From arwalker sumusltd com  2007-09-06 22:26 -------
SVN commit 709209 by arwalker:

BUG:117838 highlight the prospective parent of an object during a move operation. This is necessary as the automatic parenting feature is not necessarily intuitive and this makes it more obvious

 M  +19 -1     ksttoplevelview.cpp  
 M  +5 -4      ksttoplevelview.h  


--- branches/work/kst/1.5/kst/src/libkstapp/ksttoplevelview.cpp #709208:709209
 @ -834,7 +834,7  @
     p.setPen(QPen(Qt::black, 0, Qt::DotLine));
     if (_selectionList.isEmpty()) {
       if (old.topLeft() != QPoint(-1, -1)) {
-        _pressTarget->drawShadow(p, old.topLeft());  
+        _pressTarget->drawShadow(p, old.topLeft());
       }
       _pressTarget->drawShadow(p, r.topLeft());
     } else {
 @ -845,6 +845,22  @
         (*iter)->drawShadow(p, r.topLeft() + (*iter)->geometry().topLeft() - originalTopLeft);
       }
     }
+
+    //
+    // draw a selection for the new parent if the _pressTarget is released now...
+    //
+    KstViewObjectPtr container = findDeepestChild(r);
+
+    if (container != _prevContainer) {
+      if (_prevContainer) {
+        _prevContainer->drawShadow(p, _prevContainer->geometry().topLeft());
+      }
+      if (container) {
+        container->drawShadow(p, container->geometry().topLeft());
+      }
+      _prevContainer = container;
+    }
+
     p.end();
   }
 }
 @ -998,6 +1014,7  @
     // selecting objects using rubber band
     releasePressLayoutModeSelect(pos, shift);
   }
+  _prevContainer = 0L;
   _pressTarget = 0L;
   _pressDirection = -1;
   _moveOffset = QPoint(-1, -1);
 @ -1742,6 +1759,7  @
     }
     //_pressTarget = 0L;
     _prevBand = QRect(-1, -1, 0, 0);
+    _prevContainer = 0L;
     return;
   }
 
--- branches/work/kst/1.5/kst/src/libkstapp/ksttoplevelview.h #709208:709209
 @ -102,7 +102,7  @
     void updateFocus(const QPoint& pos);
     bool handlePress(const QPoint& pos, bool shift = false);
     bool handleDoubleClick(const QPoint& pos, bool shift = false);
-    
+
     // press move handlers
     void pressMove(const QPoint& pos, bool shift = false, bool alt = false);
     void pressMoveLayoutMode(const QPoint& pos, bool shift = false, bool alt = false);
 @ -112,7 +112,7  @
     void pressMoveLayoutModeSelect(const QPoint& pos);
     void pressMoveLayoutModeEndPoint(const QPoint& pos, bool maintainAspect = false, bool snapToBorder = true);
     void pressMoveLayoutModeCenteredResize(const QPoint& pos, bool maintainAspect = false, bool snapToBorder = true);
-    
+
     // release press handlers 
     void releasePress(const QPoint& pos, bool shift = false);
     void releasePressLayoutMode(const QPoint& pos, bool shift = false);
 @ -138,7 +138,7  @
     QPoint pointSnapToObjects(const QPoint& p);
     // Called as a response to drag re-entering widget()
     void restartMove();
-    
+
     KstGfxMouseHandler *handlerForObject(const QString& objType);
 
   private:
 @ -157,6 +157,7  @
     QPoint _moveOffset;
     QPoint _moveOffsetSticky;
     KstViewObjectPtr _pressTarget, _hoverFocus;
+    KstViewObjectPtr _prevContainer;
     QRect _prevBand;
     KstViewObjectList _selectionList;
     KstViewObjectPtr _mouseGrabber;
 @ -233,4 +234,4  @
 
 
 #endif
-// vim: ts=2 sw=2 et
+


More information about the Kst mailing list