From e30f7bf9209035a11d2c6d49246a35843f7938eb Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Fri, 14 May 2021 11:23:48 +0800 Subject: [PATCH] Gui: fix tree view expansion restore --- src/Gui/Tree.cpp | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 32f3c823e1..48dbd838ea 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -3940,17 +3940,22 @@ void DocumentItem::Save(Base::Writer& writer) const { saveExpandedItem(writer, this); } -void DocumentItem::Restore(Base::XMLReader& reader) { - reader.readElement("Expand"); - if (!reader.hasAttribute("count")) - return; - _ExpandInfo.reset(new ExpandInfo); - _ExpandInfo->restore(reader); - for (auto inst : TreeWidget::Instances) { - if (inst != getTree()) { - auto docItem = inst->getDocumentItem(document()); - if (docItem) - docItem->_ExpandInfo = _ExpandInfo; +void DocumentItem::Restore(Base::XMLReader &reader) { + int guard; + _ExpandInfo.reset(); + reader.readElement("Expand",&guard); + if(reader.hasAttribute("count")) { + _ExpandInfo.reset(new ExpandInfo); + _ExpandInfo->restore(reader); + } + reader.readEndElement("Expand",&guard); + if(_ExpandInfo) { + for(auto inst : TreeWidget::Instances) { + if(inst!=getTree()) { + auto docItem = inst->getDocumentItem(document()); + if(docItem) + docItem->_ExpandInfo = _ExpandInfo; + } } } }