summaryrefslogtreecommitdiff
path: root/vcl/unx/gtk3/gtk3gtkinst.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-02-12 15:49:21 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-02-13 09:48:14 +0100
commit7c81a8f5a12b754efd06681e017066008f00afa6 (patch)
tree837086778633c2cb4e6b24ffa2bac0923fc2932e /vcl/unx/gtk3/gtk3gtkinst.cxx
parent9fd9da5739f5a99330af5601cd0a3a257f9dc529 (diff)
tdf#130161 detect if a node already had an expansion attempt
and so isn't in child-on-demand mode anymore, in which case in basctl new module/dialog children should be appended to it similarly to how they are added if had been expanded in the earlier attempt Change-Id: I75255fb743852c70e194bbf4828cd90b9112db79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88544 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/unx/gtk3/gtk3gtkinst.cxx')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx34
1 files changed, 24 insertions, 10 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 177dfc7c5674..cb0adf9c57b2 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -8697,25 +8697,32 @@ private:
return !pThis->signal_test_expand_row(*iter);
}
- bool signal_test_expand_row(GtkTreeIter& iter)
+ bool child_is_placeholder(GtkInstanceTreeIter& rGtkIter) const
{
- disable_notify_events();
- GtkInstanceTreeIter aIter(nullptr);
-
- // if there's a preexisting placeholder child, required to make this
- // potentially expandable in the first place, now we remove it
bool bPlaceHolder = false;
GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
GtkTreeIter tmp;
- if (gtk_tree_model_iter_children(pModel, &tmp, &iter))
+ if (gtk_tree_model_iter_children(pModel, &tmp, &rGtkIter.iter))
{
- aIter.iter = tmp;
- if (get_text(aIter, -1) == "<dummy>")
+ rGtkIter.iter = tmp;
+ if (get_text(rGtkIter, -1) == "<dummy>")
{
- gtk_tree_store_remove(m_pTreeStore, &tmp);
bPlaceHolder = true;
}
}
+ return bPlaceHolder;
+ }
+
+ bool signal_test_expand_row(GtkTreeIter& iter)
+ {
+ disable_notify_events();
+
+ // if there's a preexisting placeholder child, required to make this
+ // potentially expandable in the first place, now we remove it
+ GtkInstanceTreeIter aIter(iter);
+ bool bPlaceHolder = child_is_placeholder(aIter);
+ if (bPlaceHolder)
+ gtk_tree_store_remove(m_pTreeStore, &aIter.iter);
aIter.iter = iter;
bool bRet = signal_expanding(aIter);
@@ -10008,6 +10015,13 @@ public:
return ret;
}
+ virtual bool get_children_on_demand(const weld::TreeIter& rIter) const override
+ {
+ const GtkInstanceTreeIter& rGtkIter = static_cast<const GtkInstanceTreeIter&>(rIter);
+ GtkInstanceTreeIter aIter(&rGtkIter);
+ return child_is_placeholder(aIter);
+ }
+
virtual void expand_row(const weld::TreeIter& rIter) override
{
assert(gtk_tree_view_get_model(m_pTreeView) && "don't expand when frozen");