diff --git a/code/nel/include/nel/gui/group_tree.h b/code/nel/include/nel/gui/group_tree.h index 1b64122f3..ae4bcb3d0 100644 --- a/code/nel/include/nel/gui/group_tree.h +++ b/code/nel/include/nel/gui/group_tree.h @@ -97,6 +97,7 @@ namespace NLGUI void addChildSortedByBitmap(SNode *pNode); void setParentTree(CGroupTree *parent); void setFather(SNode *father); + void openAll(); void closeAll(); void makeOrphan(); bool parse (xmlNodePtr cur, CGroupTree *parentGroup); diff --git a/code/nel/src/gui/group_tree.cpp b/code/nel/src/gui/group_tree.cpp index c65ceba17..e1fa8292a 100644 --- a/code/nel/src/gui/group_tree.cpp +++ b/code/nel/src/gui/group_tree.cpp @@ -271,6 +271,14 @@ namespace NLGUI pNode->setFather(this); } + // ---------------------------------------------------------------------------- + void CGroupTree::SNode::openAll() + { + Opened = true; + for (uint i = 0; i < Children.size(); ++i) + Children[i]->openAll(); + } + // ---------------------------------------------------------------------------- void CGroupTree::SNode::closeAll() { @@ -1082,7 +1090,9 @@ namespace NLGUI } } - if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftdown) + bool toggleOne = (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftdown); + bool toggleAll = (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightdown); + if (toggleOne || toggleAll) { // line selection if (bText) @@ -1118,6 +1128,13 @@ namespace NLGUI { // open/close the node changedNode->Opened = !changedNode->Opened; + if (toggleAll) + { + if (changedNode->Opened) + changedNode->openAll(); + else + changedNode->closeAll(); + } } // else must close all necessary nodes. else