From b650689526ac3855bba42c076b9b0a9df289372f Mon Sep 17 00:00:00 2001 From: akl Date: Mon, 21 Jul 2014 19:54:40 +0400 Subject: [PATCH] Corrections to solve 0022648: [CEA 1217]: 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 | 17 ++++++++++++++--- src/genericgui/SceneNodeItem.cxx | 4 ++++ src/genericgui/SceneProcItem.cxx | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/genericgui/GenericGui.cxx b/src/genericgui/GenericGui.cxx index 31d51b782..5094c4b68 100644 --- a/src/genericgui/GenericGui.cxx +++ b/src/genericgui/GenericGui.cxx @@ -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); diff --git a/src/genericgui/SceneNodeItem.cxx b/src/genericgui/SceneNodeItem.cxx index 055a01643..fdff648d0 100644 --- a/src/genericgui/SceneNodeItem.cxx +++ b/src/genericgui/SceneNodeItem.cxx @@ -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); diff --git a/src/genericgui/SceneProcItem.cxx b/src/genericgui/SceneProcItem.cxx index 4bfa58f56..14ec4befe 100644 --- a/src/genericgui/SceneProcItem.cxx +++ b/src/genericgui/SceneProcItem.cxx @@ -87,5 +87,6 @@ void SceneProcItem::reorganizeShrinkExpand() { _height = _expandedHeight; _shownState = expandShown; adjustHeader(); + rebuildLinks(); } -- 2.39.2