From 1308a02c831b177456fd2c7986cb91c49ff86006 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 24 Feb 2019 00:37:53 +0100 Subject: [PATCH] when restoring object then only expand single items, not its parent items --- src/Gui/ActiveObjectList.cpp | 4 ++-- src/Gui/Document.cpp | 2 +- src/Gui/DocumentPyImp.cpp | 8 +++++--- src/Gui/Tree.cpp | 12 +++++++----- src/Gui/Tree.h | 7 ++++--- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/Gui/ActiveObjectList.cpp b/src/Gui/ActiveObjectList.cpp index 0d73ac30d0..6f65de40e9 100644 --- a/src/Gui/ActiveObjectList.cpp +++ b/src/Gui/ActiveObjectList.cpp @@ -50,7 +50,7 @@ void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name (doc->getViewProvider(act)); doc->signalHighlightObject(*viewProvider, mode, false); if (autoExpand) - doc->signalExpandObject(*viewProvider, Gui::Collapse); + doc->signalExpandObject(*viewProvider, Gui::CollapseItem); } if (obj) { @@ -59,7 +59,7 @@ void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name (doc->getViewProvider(obj)); doc->signalHighlightObject(*viewProvider, mode, true); if (autoExpand) - doc->signalExpandObject(*viewProvider, Gui::Expand); + doc->signalExpandObject(*viewProvider, Gui::ExpandPath); _ObjectMap[name] = obj; } else { diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index 5e73272bbc..48766c8200 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -829,7 +829,7 @@ void Document::RestoreDocFile(Base::Reader &reader) pObj->Restore(xmlReader); if (pObj && expanded) { Gui::ViewProviderDocumentObject* vp = static_cast(pObj); - this->signalExpandObject(*vp, Gui::Expand); + this->signalExpandObject(*vp, Gui::ExpandItem); } xmlReader.readEndElement("ViewProvider"); } diff --git a/src/Gui/DocumentPyImp.cpp b/src/Gui/DocumentPyImp.cpp index 47db5522fd..f6d1eed385 100644 --- a/src/Gui/DocumentPyImp.cpp +++ b/src/Gui/DocumentPyImp.cpp @@ -300,9 +300,11 @@ PyObject* DocumentPy::toggleTreeItem(PyObject *args) //ActiveGuiDoc = Gui::Application::Instance->getDocument(getDocumentPtr()); Gui::ViewProviderDocumentObject* ActiveVp = dynamic_cast (getDocumentPtr()->getViewProvider(Object)) ; switch(mod) { - case 0: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::Toggle); break; - case 1: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::Collapse); break; - case 2: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::Expand); break; + case 0: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::ToggleItem); break; + case 1: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::CollapseItem); break; + case 2: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::ExpandItem); break; + case 3: getDocumentPtr()->signalExpandObject(*ActiveVp,Gui::ExpandPath); break; + default: break; } } diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 91d9c047a0..e3cbf44ef3 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -1622,7 +1622,7 @@ void DocumentItem::slotExpandObject (const Gui::ViewProviderDocumentObject& obj, // the parent-children relationship of the view providers is rather inefficient. FOREACH_ITEM(item,obj) switch (mode) { - case Gui::Expand: { + case Gui::ExpandPath: { QTreeWidgetItem* parent = item->parent(); while (parent) { parent->setExpanded(true); @@ -1630,10 +1630,13 @@ void DocumentItem::slotExpandObject (const Gui::ViewProviderDocumentObject& obj, } item->setExpanded(true); } break; - case Gui::Collapse: + case Gui::ExpandItem: + item->setExpanded(true); + break; + case Gui::CollapseItem: item->setExpanded(false); break; - case Gui::Toggle: + case Gui::ToggleItem: if (item->isExpanded()) item->setExpanded(false); else @@ -1641,8 +1644,7 @@ void DocumentItem::slotExpandObject (const Gui::ViewProviderDocumentObject& obj, break; default: - // not defined enum - assert(0); + break; } populateItem(item); END_FOREACH_ITEM diff --git a/src/Gui/Tree.h b/src/Gui/Tree.h index 820bc08be5..adec613d9f 100644 --- a/src/Gui/Tree.h +++ b/src/Gui/Tree.h @@ -53,9 +53,10 @@ enum HighlightMode { Underlined, }; /// highlight modes for the tree items -enum TreeItemMode { Expand, - Collapse, - Toggle +enum TreeItemMode { ExpandItem, + ExpandPath, + CollapseItem, + ToggleItem };