[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Wed Oct 14 08:03:22 UTC 2020
vcl/unx/gtk3/gtk3gtkinst.cxx | 25 +++++++------------------
1 file changed, 7 insertions(+), 18 deletions(-)
New commits:
commit 231a4e024b85aa0ad06a5632d3f514152babea30
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Oct 13 14:52:35 2020 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Oct 14 10:02:43 2020 +0200
better fix for tdf#136455 without destroying widgets we don't truly own
Change-Id: I9c3148fc6dd8658e1ff4a91ff83888288806f9e4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104256
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 1c67472bf8c8..edd2d6bf63c5 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -14646,21 +14646,6 @@ private:
return true;
}
- // Since tdf#131120 we don't use the original ComboBox menu, but it's still
- // listening to additions to the ListStore and slowing things down (tdf#136455)
- void destroy_unused_menu()
- {
- AtkObject* pAtkObj = gtk_combo_box_get_popup_accessible(m_pComboBox);
- if (!pAtkObj)
- return;
- if (!GTK_IS_ACCESSIBLE(pAtkObj))
- return;
- GtkWidget* pWidget = gtk_accessible_get_widget(GTK_ACCESSIBLE(pAtkObj));
- if (!pWidget)
- return;
- gtk_widget_destroy(pWidget);
- }
-
public:
GtkInstanceComboBox(GtkBuilder* pComboBuilder, GtkComboBox* pComboBox, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceContainer(GTK_CONTAINER(gtk_builder_get_object(pComboBuilder, "box")), pBuilder, bTakeOwnership)
@@ -14703,7 +14688,13 @@ public:
gtk_widget_set_no_show_all(GTK_WIDGET(m_pComboBox), true);
gtk_tree_view_set_model(m_pTreeView, m_pTreeModel);
- gtk_combo_box_set_model(m_pComboBox, nullptr);
+ /* tdf#136455 gtk_combo_box_set_model with a null Model should be good
+ enough. But in practice, while the ComboBox model is unset, GTK
+ doesn't unset the ComboBox menus model, so that remains listening to
+ additions to the ListStore and slowing things down massively.
+ Using a new model does reset the menu to listen to that unused one instead */
+ gtk_combo_box_set_model(m_pComboBox, GTK_TREE_MODEL(gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING)));
+
GtkTreeViewColumn* pCol = gtk_tree_view_column_new();
gtk_tree_view_append_column(m_pTreeView, pCol);
@@ -14802,8 +14793,6 @@ public:
gtk_overlay_add_overlay(m_pOverlay, GTK_WIDGET(m_pOverlayButton));
g_signal_connect(m_pOverlayButton, "leave-notify-event", G_CALLBACK(signalOverlayButtonCrossing), this);
g_signal_connect(m_pOverlayButton, "enter-notify-event", G_CALLBACK(signalOverlayButtonCrossing), this);
-
- destroy_unused_menu();
}
virtual int get_active() const override
More information about the Libreoffice-commits
mailing list