diff options
author | Jim Raykowski <raykowj@gmail.com> | 2020-09-21 23:50:26 -0800 |
---|---|---|
committer | Jim Raykowski <raykowj@gmail.com> | 2020-10-08 21:27:25 +0200 |
commit | 95438b18160a8b6e51c30c6566e40f5aeaf94f1f (patch) | |
tree | 1ba9ea0c4daae5d46d103c5b81649daa4615b356 /sw | |
parent | fc79ca32f08e2478fe827caa26d8f5e90f4d93d0 (diff) |
tdf#136964 Writer Navigator: Use same Headings expanded states
for Headings content navigation view and All content navigation view.
Change-Id: I21fae6f0b6c0c67dd89a58fb6a5694475238e66c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103742
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/uibase/utlui/content.cxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 626e5354f01d..bc801c5af2d0 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -2039,13 +2039,12 @@ void SwContentTree::Display( bool bActive ) { std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->make_iterator(); std::unique_ptr<weld::TreeIter> xSelEntry; + std::vector<std::unique_ptr<weld::TreeIter>> aNodesToExpand; // all content navigation view if(m_nRootType == ContentTypeId::UNKNOWN) { m_xTreeView->freeze(); - std::vector<std::unique_ptr<weld::TreeIter>> aNodesToExpand; - for( ContentTypeId nCntType : o3tl::enumrange<ContentTypeId>() ) { std::unique_ptr<SwContentType>& rpContentT = bActive ? @@ -2054,11 +2053,10 @@ void SwContentTree::Display( bool bActive ) if(!rpContentT) rpContentT.reset(new SwContentType(pShell, nCntType, m_nOutlineLevel )); - OUString sEntry = rpContentT->GetName(); OUString aImage(GetImageIdForContentTypeId(nCntType)); bool bChOnDemand = 0 != rpContentT->GetMemberCount(); OUString sId(OUString::number(reinterpret_cast<sal_Int64>(rpContentT.get()))); - insert(nullptr, sEntry, sId, bChOnDemand, xEntry.get()); + insert(nullptr, rpContentT->GetName(), sId, bChOnDemand, xEntry.get()); m_xTreeView->set_image(*xEntry, aImage); m_xTreeView->set_sensitive(*xEntry, bChOnDemand); @@ -2169,7 +2167,8 @@ void SwContentTree::Display( bool bActive ) } else { - RequestingChildren(*xEntry); + // fill contents of to-be expanded entries while frozen + Expand(*xEntry, &aNodesToExpand); m_xTreeView->set_children_on_demand(*xEntry, false); } @@ -2177,7 +2176,14 @@ void SwContentTree::Display( bool bActive ) m_xTreeView->thaw(); - m_xTreeView->expand_row(*xEntry); + if (bChOnDemand) + { + // restore visual expanded tree state + for (const auto& rNode : aNodesToExpand) + m_xTreeView->expand_row(*rNode); + } + else + m_xTreeView->expand_row(*xEntry); // reselect the entry if (nEntryRelPos) |