summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorJim Raykowski <raykowj@gmail.com>2020-09-21 23:50:26 -0800
committerJim Raykowski <raykowj@gmail.com>2020-10-08 21:27:25 +0200
commit95438b18160a8b6e51c30c6566e40f5aeaf94f1f (patch)
tree1ba9ea0c4daae5d46d103c5b81649daa4615b356 /sw
parentfc79ca32f08e2478fe827caa26d8f5e90f4d93d0 (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.cxx18
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)