sw/source/uibase/utlui/content.cxx |   12 ++++++++++++
 vcl/unx/gtk3/gtkinst.cxx           |    2 --
 2 files changed, 12 insertions(+), 2 deletions(-)

New commits:
commit 4d1a9a76a1dbef9d177e55d6fc9b294a6dafe33f
Author:     Jim Raykowski <rayk...@gmail.com>
AuthorDate: Wed Jun 22 17:53:10 2022 -0800
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Jun 27 17:51:15 2022 +0200

    tdf#149279 SwNavigator enhancement to show at least two headings
    
    above tracked heading
    
    For gtk3, treeview scroll_to_row to a visible collapsed row makes
    the row expanded. The sal version does not. To make the behavior
    consistent, the patch removes the call to
    gtk_tree_view_expand_to_path which causes a visible collapsed row to
    expand.
    
    Change-Id: I29e67535ab23aa1952b4ff97c1b81276794b8036
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136436
    Tested-by: Jenkins
    Reviewed-by: Jim Raykowski <rayk...@gmail.com>
    (cherry picked from commit 8e8e0aefc998adba749a93cacc4660d859fba675)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136462
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sw/source/uibase/utlui/content.cxx 
b/sw/source/uibase/utlui/content.cxx
index de9275d3d1b9..d23fbe63b849 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -3897,6 +3897,18 @@ void SwContentTree::UpdateTracking()
                         // unselect all entries, make pEntry visible, and 
select
                         m_xTreeView->set_cursor(rEntry);
                         Select();
+
+                        // tdf#149279 show at least two outline entries before 
the set cursor entry
+                        std::unique_ptr<weld::TreeIter> 
xIter(m_xTreeView->make_iterator(&rEntry));
+                        for (int i = 0; i < 2; i++)
+                        {
+                            if (m_xTreeView->get_iter_depth(*xIter) == 0)
+                                break;
+                            m_xTreeView->iter_previous(*xIter);
+                            while (!weld::IsEntryVisible(*m_xTreeView, *xIter))
+                                m_xTreeView->iter_parent(*xIter);
+                        }
+                        m_xTreeView->scroll_to_row(*xIter);
                     }
                     bRet = true;
                 }
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index a49e32dc8cfa..ceab7160c86b 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -14792,7 +14792,6 @@ public:
         assert(gtk_tree_view_get_model(m_pTreeView) && "don't select when 
frozen, select after thaw. Note selection doesn't survive a freeze");
         disable_notify_events();
         GtkTreePath* path = gtk_tree_path_new_from_indices(pos, -1);
-        gtk_tree_view_expand_to_path(m_pTreeView, path);
         gtk_tree_view_scroll_to_cell(m_pTreeView, path, nullptr, false, 0, 0);
         gtk_tree_path_free(path);
         enable_notify_events();
@@ -15470,7 +15469,6 @@ public:
         disable_notify_events();
         const GtkInstanceTreeIter& rGtkIter = static_cast<const 
GtkInstanceTreeIter&>(rIter);
         GtkTreePath* path = gtk_tree_model_get_path(m_pTreeModel, 
const_cast<GtkTreeIter*>(&rGtkIter.iter));
-        gtk_tree_view_expand_to_path(m_pTreeView, path);
         gtk_tree_view_scroll_to_cell(m_pTreeView, path, nullptr, false, 0, 0);
         gtk_tree_path_free(path);
         enable_notify_events();

Reply via email to