[gnome-terminal/gnome-3-32] headerbar: Disconnect menu model on dispose
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal/gnome-3-32] headerbar: Disconnect menu model on dispose
- Date: Wed, 1 May 2019 18:42:16 +0000 (UTC)
commit c1ac9740fff535e017edac252f89418b600b179c
Author: Christian Persch <chpe src gnome org>
Date: Wed May 1 20:40:48 2019 +0200
headerbar: Disconnect menu model on dispose
https://bugzilla.redhat.com/show_bug.cgi?id=1704571
(cherry picked from commit a96eaf553afcd7b436c5792fa4cccde0f4789a70)
src/terminal-headerbar.c | 29 +++++++++++++++--------------
1 file changed, 15 insertions(+), 14 deletions(-)
---
diff --git a/src/terminal-headerbar.c b/src/terminal-headerbar.c
index dfe3dec4..fc929d7b 100644
--- a/src/terminal-headerbar.c
+++ b/src/terminal-headerbar.c
@@ -59,14 +59,11 @@ G_DEFINE_TYPE_WITH_PRIVATE (TerminalHeaderbar, terminal_headerbar, GTK_TYPE_HEAD
static void
profilemenu_items_changed_cb (GMenuModel *menu,
- guint position G_GNUC_UNUSED,
- guint removed G_GNUC_UNUSED,
- guint added G_GNUC_UNUSED,
- gpointer user_data)
+ int position G_GNUC_UNUSED,
+ int removed G_GNUC_UNUSED,
+ int added G_GNUC_UNUSED,
+ TerminalHeaderbarPrivate *priv)
{
- TerminalHeaderbar *headerbar = user_data;
- TerminalHeaderbarPrivate *priv = PRIV (headerbar);
-
if (g_menu_model_get_n_items (menu) > 0)
gtk_widget_show (priv->profilebutton);
else
@@ -94,19 +91,23 @@ terminal_headerbar_init (TerminalHeaderbar *headerbar)
profilemenu);
g_signal_connect (profilemenu, "items-changed",
- G_CALLBACK (profilemenu_items_changed_cb), headerbar);
- profilemenu_items_changed_cb (profilemenu, 0, 0, 0, headerbar);
+ G_CALLBACK (profilemenu_items_changed_cb), priv);
+ profilemenu_items_changed_cb (profilemenu, 0, 0, 0, priv);
}
static void
-terminal_headerbar_finalize (GObject *object)
+terminal_headerbar_dispose (GObject *object)
{
-#if 0
TerminalHeaderbar *headerbar = TERMINAL_HEADERBAR (object);
TerminalHeaderbarPrivate *priv = PRIV (headerbar);
-#endif
+ TerminalApp *app = terminal_app_get ();
+
+ GMenuModel *profilemenu = terminal_app_get_profilemenu (app);
+ g_signal_handlers_disconnect_by_func (profilemenu,
+ G_CALLBACK (profilemenu_items_changed_cb),
+ priv);
- G_OBJECT_CLASS (terminal_headerbar_parent_class)->finalize (object);
+ G_OBJECT_CLASS (terminal_headerbar_parent_class)->dispose (object);
}
static void
@@ -143,7 +144,7 @@ terminal_headerbar_class_init (TerminalHeaderbarClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- gobject_class->finalize = terminal_headerbar_finalize;
+ gobject_class->dispose = terminal_headerbar_dispose;
gobject_class->get_property = terminal_headerbar_get_property;
gobject_class->set_property = terminal_headerbar_set_property;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]