-// Copyright (C) 2006-2014 CEA/DEN, EDF R&D
+// Copyright (C) 2006-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
m.popupMenu(caller, globalPos);
}
-void SceneElementaryNodeItem::reorganizeShrinkExpand()
+void SceneElementaryNodeItem::reorganizeShrinkExpand(ShrinkMode theShrinkMode)
{
DEBTRACE("SceneElementaryNodeItem::reorganizeShrinkExpand " << isExpanded() << " " << _label.toStdString());
- shrinkExpandRecursive(isExpanded(), true);
+ if (theShrinkMode != CurrentNode)
+ return;
+ shrinkExpandRecursive(!isExpanded(), true, theShrinkMode);
if (Scene::_autoComputeLinks)
{
SubjectProc* subproc = QtGuiContext::getQtCurrent()->getSubjectProc();
}
}
-void SceneElementaryNodeItem::shrinkExpandRecursive(bool isExpanding, bool fromHere)
+void SceneElementaryNodeItem::shrinkExpandRecursive(bool toExpand, bool fromHere, ShrinkMode theShrinkMode)
{
- DEBTRACE("SceneElementaryNodeItem::shrinkExpandRecursive " << isExpanding << " " << fromHere << " " << isExpanded() << " " << _label.toStdString());
- if (isExpanding)
- {
+ DEBTRACE("SceneElementaryNodeItem::shrinkExpandRecursive " << toExpand << " " << fromHere << " " << isExpanded() << " " << _label.toStdString());
+
+ bool toChangeShrinkState = false;
+ switch (theShrinkMode) {
+ case CurrentNode:
+ if (fromHere)
+ toChangeShrinkState = true;
+ break;
+ case ChildrenNodes:
+ if (fromHere)
+ toChangeShrinkState = true;
+ break;
+ case ElementaryNodes:
+ toChangeShrinkState = true;
+ break;
+ }
+ if (toChangeShrinkState && toExpand != isExpanded())
+ setExpanded(toExpand);
+
+ if (toExpand) {
+ if (toChangeShrinkState) {
_ancestorShrinked = false;
+ _shownState = expandShown;
+ } else {
if (isExpanded())
_shownState = expandShown;
else
_shownState = shrinkShown;
}
- else
- {
- if (fromHere)
- _shownState = shrinkShown;
- else
- {
- _ancestorShrinked = true;
- _shownState = shrinkHidden;
- }
+ } else {
+ if (fromHere || theShrinkMode==ElementaryNodes) {
+ _shownState = shrinkShown;
+ } else {
+ _ancestorShrinked = true;
+ _shownState = shrinkHidden;
}
+ }
if (_shownState == shrinkHidden) // shrink of ancestor
- setPos(0 ,0);
+ setPos(0, 0);
else
setPos(_expandedPos);