vcl/unx/gtk3/gtk3gtkinst.cxx |   35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

New commits:
commit 7ba168173addd286fef11c0d5634fb3a1eb73fee
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Mar 12 20:22:56 2020 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Mar 13 09:19:54 2020 +0100

    skip on-demand entries on iter_next/iter_previous
    
    Change-Id: I5a12cae948893ea4e221f335cc29acc663e1ce29
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90442
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index c9867a731903..fefc63bb1d1f 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -10139,10 +10139,20 @@ public:
     {
         GtkInstanceTreeIter& rGtkIter = 
static_cast<GtkInstanceTreeIter&>(rIter);
         GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
+        GtkTreeIter tmp;
         GtkTreeIter iter = rGtkIter.iter;
-        if (iter_children(rGtkIter))
+
+        bool ret = gtk_tree_model_iter_children(pModel, &tmp, &iter);
+        rGtkIter.iter = tmp;
+        if (ret)
+        {
+            //on-demand dummy entry doesn't count
+            if (get_text(rGtkIter, -1) == "<dummy>")
+                return iter_next(rGtkIter);
             return true;
-        GtkTreeIter tmp = iter;
+        }
+
+        tmp = iter;
         if (gtk_tree_model_iter_next(pModel, &tmp))
         {
             rGtkIter.iter = tmp;
@@ -10163,6 +10173,7 @@ public:
 
     virtual bool iter_previous(weld::TreeIter& rIter) const override
     {
+        bool ret = false;
         GtkInstanceTreeIter& rGtkIter = 
static_cast<GtkInstanceTreeIter&>(rIter);
         GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
         GtkTreeIter iter = rGtkIter.iter;
@@ -10175,14 +10186,26 @@ public:
                 rGtkIter.iter = tmp;
             else
                 last_child(pModel, &rGtkIter.iter, &tmp, nChildren);
-            return true;
+            ret = true;
         }
-        // Move up level
-        if (gtk_tree_model_iter_parent(pModel, &tmp, &iter))
+        else
         {
-            rGtkIter.iter = tmp;
+            // Move up level
+            if (gtk_tree_model_iter_parent(pModel, &tmp, &iter))
+            {
+                rGtkIter.iter = tmp;
+                ret = true;
+            }
+        }
+
+        if (ret)
+        {
+            //on-demand dummy entry doesn't count
+            if (get_text(rGtkIter, -1) == "<dummy>")
+                return iter_previous(rGtkIter);
             return true;
         }
+
         return false;
     }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to