]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Improve resize of Bloc nodes in expanded mode (take into account zoom factor).
authormkr <mkr@opencascade.com>
Fri, 20 Apr 2007 07:53:52 +0000 (07:53 +0000)
committermkr <mkr@opencascade.com>
Fri, 20 Apr 2007 07:53:52 +0000 (07:53 +0000)
src/QxGraph/QxGraph_ActiveItem.h
src/QxGraph/QxGraph_CanvasView.cxx

index 728be6a12c6426e64717fe095f737cacda99c0ff..4f84089caded0016900841fb25e6aa7543a68620 100644 (file)
@@ -22,6 +22,7 @@
 #include "QxGraph.h"
 
 #include <qpoint.h>
+#include <qwmatrix.h> 
 
 class QXGRAPH_EXPORT QxGraph_ActiveItem
 {
@@ -44,6 +45,12 @@ class QXGRAPH_EXPORT QxGraph_ActiveItem
   virtual void showPopup() = 0;
 
   virtual QString getToolTipText(const QPoint& theMousePos, QRect& theRect) const = 0;
+
+  void setTMatrix(QWMatrix theMatrix) { myTMatrix = theMatrix; }
+  QWMatrix getTMatrix() const { return myTMatrix; }
+
+ private:
+  QWMatrix myTMatrix; // canvas view's current transformation matrix
 };
 
 #endif
index b096548465035b56ef8361c92882766efb3d063b..fdc5c6b5be848871c4675028cf62c8563ee90cd6 100644 (file)
@@ -242,7 +242,14 @@ void QxGraph_CanvasView::contentsMouseMoveEvent(QMouseEvent* theEvent)
     QWMatrix m = worldMatrix();
     m.scale(s, s);
     setWorldMatrix(m);
-       
+    
+    // remember the canvas view's current transformation matrix in all canvas items
+    QCanvasItemList aList = canvas()->allItems();
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+      if ( anActItem ) anActItem->setTMatrix(m);
+    }
+       
     myGlobalPoint = aGlobalPoint;
     return;
   }
@@ -416,6 +423,14 @@ void QxGraph_CanvasView::contentsMouseReleaseEvent(QMouseEvent* theEvent)
     QWMatrix m;
     m.scale(aXzoom, aXzoom);
     setWorldMatrix(m);
+
+    // remember the canvas view's current transformation matrix in all canvas items
+    QCanvasItemList aList = canvas()->allItems();
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+      if ( anActItem ) anActItem->setTMatrix(m);
+    }
+
     setContentsPos((int)(aLX*aXzoom), (int)(aTY*aYzoom));
 
     canvas()->update();
@@ -528,6 +543,14 @@ void QxGraph_CanvasView::activateFitAll()
   QWMatrix m;
   m.scale(s, s);
   setWorldMatrix(m);
+
+  // remember the canvas view's current transformation matrix in all canvas items
+  QCanvasItemList aList = canvas()->allItems();
+  for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+    if ( anActItem ) anActItem->setTMatrix(m);
+  }
+  
   canvas()->update();
   //myOperation = NOTHING;
 }
@@ -575,6 +598,14 @@ void QxGraph_CanvasView::activateReset()
   setContentsPos(0,0);
   QWMatrix m;
   setWorldMatrix(m);
+  
+  // remember the canvas view's current transformation matrix in all canvas items
+  QCanvasItemList aList = canvas()->allItems();
+  for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+    if ( anActItem ) anActItem->setTMatrix(m);
+  }
+
   //myOperation = NOTHING;
 }