]> SALOME platform Git repositories - modules/yacs.git/commitdiff
Salome HOME
Corrections to solve 0022648: [CEA 1217]:
authorakl <alexander.kovalev@opencascade.com>
Mon, 21 Jul 2014 15:54:40 +0000 (19:54 +0400)
committerakl <alexander.kovalev@opencascade.com>
Mon, 21 Jul 2014 15:54:40 +0000 (19:54 +0400)
1) GenericGui.cxx: ignore null (expx,expy) at loading XML schema and use (x,y) in this case;
2) GenericGui.cxx and SceneNodeItem.cxx: use expanded position of node in Shrink state and correct this position at loading XML schema if it is needed;
3) SceneProcItem.cxx: rebuild links after Shrink/Expand operation.

src/genericgui/GenericGui.cxx
src/genericgui/SceneNodeItem.cxx
src/genericgui/SceneProcItem.cxx

index 31d51b7829fc966fbd946d939a9fc95e6610ec93..5094c4b68c4be8443c7ca159953ae84eb93204dc 100644 (file)
@@ -1231,13 +1231,24 @@ void GenericGui::setLoadedPresentation(YACS::ENGINE::Proc* proc)
           inode->setWidth(pres._width);
           inode->setHeight(pres._height);
           inode->setExpanded(pres._expanded);
-          inode->setExpandedPos(QPointF(pres._expx, pres._expy));
+          QPointF anExpandedPos = QPointF(pres._expx, pres._expy);
+          if (anExpandedPos.isNull())
+              anExpandedPos = inode->pos();
+          inode->setExpandedPos(anExpandedPos);
           inode->setExpandedWH(pres._expWidth, pres._expHeight);
           inode->setShownState(shownState(pres._shownState));
 
           // collect nodes to correct it's Y-position if this collides with parent's header
-          if (inode->getParent() && inode->y() < inode->getParent()->getHeaderBottom())
-            nodesToMove[inode] = QPointF(inode->x(), inode->getParent()->getHeaderBottom()+1);
+          if (inode->getParent() ) {
+              qreal anX = inode->x();
+              qreal anY = inode->y();
+              if (inode->getShownState() == shrinkHidden) {
+                anX = inode->getExpandedX();
+                anY = inode->getExpandedY();
+              }
+              if (anY < inode->getParent()->getHeaderBottom())
+                nodesToMove[inode] = QPointF(anX, inode->getParent()->getHeaderBottom()+1);
+            }
         }
     }
   QtGuiContext::getQtCurrent()->setLoadingPresentation(false);
index 055a0164340a7ea243df08f953e79f08ec28180a..fdff648d0804d06460e83d42bc914ed71ea4db4a 100644 (file)
@@ -315,6 +315,10 @@ void SceneNodeItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
 
 void SceneNodeItem::setTopLeft(QPointF topLeft)
 {
+  if (_shownState == shrinkHidden) {
+    _expandedPos = topLeft;
+    return;
+  }
   QPointF oldPos = pos();
   setPos(topLeft);
 
index 4bfa58f56f56c73006084dd315e4d41878201075..14ec4befe06571e9f7a043611676e8ea93cbae0c 100644 (file)
@@ -87,5 +87,6 @@ void SceneProcItem::reorganizeShrinkExpand() {
   _height = _expandedHeight;
   _shownState = expandShown;
   adjustHeader();
+  rebuildLinks();
 }