From 3649dc202bedf72e37c77993a1f7027bfdfc6d9e Mon Sep 17 00:00:00 2001 From: Attila Szűcs Date: Thu, 29 Jun 2023 18:32:27 +0200 Subject: LOK: Navigator: fix expand problems MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Save/load content types' expanded status to view, and make sure it is synchronized with client. Treeviews now receive/send collapse event/status from/to client. I've rewritten the way how headings are opened by default (because synch of collapsed status broke that, as sub-headings were not expanded at core side). Change-Id: I80f5b4d99fe5224391a92c4609f94ddbcf37b8ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153771 Tested-by: Jenkins CollaboraOffice Reviewed-by: Andras Timar (cherry picked from commit b95750af717e0693a13c3ef35277779e1394e0ae) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158016 Tested-by: Jenkins Reviewed-by: Caolán McNamara --- vcl/jsdialog/executor.cxx | 10 ++++++++++ vcl/source/treelist/svtabbx.cxx | 4 ++++ 2 files changed, 14 insertions(+) (limited to 'vcl') diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index 17c56d78e61e..46d5fb675366 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -498,6 +498,16 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap pTreeView->expand_row(*itEntry); return true; } + else if (sAction == "collapse") + { + sal_Int32 nAbsPos = o3tl::toInt32(rData["data"]); + std::unique_ptr itEntry(pTreeView->make_iterator()); + pTreeView->get_iter_abs_pos(*itEntry, nAbsPos); + pTreeView->set_cursor_without_notify(*itEntry); + pTreeView->grab_focus(); + pTreeView->collapse_row(*itEntry); + return true; + } else if (sAction == "dragstart") { sal_Int32 nRow = o3tl::toInt32(rData["data"]); diff --git a/vcl/source/treelist/svtabbx.cxx b/vcl/source/treelist/svtabbx.cxx index 0c3a179f0adf..81f0f4e8b078 100644 --- a/vcl/source/treelist/svtabbx.cxx +++ b/vcl/source/treelist/svtabbx.cxx @@ -104,6 +104,10 @@ static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, rJsonWriter.put("ondemand", true); } } + if (rChildren.size() > 0 && !pTabListBox->IsExpanded(pEntry)) + { + rJsonWriter.put("collapsed", true); + } if (bCheckButtons) { -- cgit