when restoring object then only expand single items, not its parent items

This commit is contained in:
wmayer
2019-02-24 00:37:53 +01:00
parent 03d7070e58
commit 1308a02c83
5 changed files with 19 additions and 14 deletions

View File

@@ -50,7 +50,7 @@ void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name
<Gui::ViewProviderDocumentObject*>(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
<Gui::ViewProviderDocumentObject*>(doc->getViewProvider(obj));
doc->signalHighlightObject(*viewProvider, mode, true);
if (autoExpand)
doc->signalExpandObject(*viewProvider, Gui::Expand);
doc->signalExpandObject(*viewProvider, Gui::ExpandPath);
_ObjectMap[name] = obj;
}
else {

View File

@@ -829,7 +829,7 @@ void Document::RestoreDocFile(Base::Reader &reader)
pObj->Restore(xmlReader);
if (pObj && expanded) {
Gui::ViewProviderDocumentObject* vp = static_cast<Gui::ViewProviderDocumentObject*>(pObj);
this->signalExpandObject(*vp, Gui::Expand);
this->signalExpandObject(*vp, Gui::ExpandItem);
}
xmlReader.readEndElement("ViewProvider");
}

View File

@@ -300,9 +300,11 @@ PyObject* DocumentPy::toggleTreeItem(PyObject *args)
//ActiveGuiDoc = Gui::Application::Instance->getDocument(getDocumentPtr());
Gui::ViewProviderDocumentObject* ActiveVp = dynamic_cast<Gui::ViewProviderDocumentObject*> (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;
}
}

View File

@@ -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

View File

@@ -53,9 +53,10 @@ enum HighlightMode { Underlined,
};
/// highlight modes for the tree items
enum TreeItemMode { Expand,
Collapse,
Toggle
enum TreeItemMode { ExpandItem,
ExpandPath,
CollapseItem,
ToggleItem
};