diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-03-12 20:22:56 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-03-13 09:19:54 +0100 |
commit | 7ba168173addd286fef11c0d5634fb3a1eb73fee (patch) | |
tree | 0ae0405a3a8fa0eeeecad98b19508342ff666167 /vcl | |
parent | 2f2213016772c94b578c40e65f85c699d289887e (diff) |
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 <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 35 |
1 files changed, 29 insertions, 6 deletions
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; } |