diff options
author | monsta <[email protected]> | 2016-09-28 21:05:46 +0300 |
---|---|---|
committer | monsta <[email protected]> | 2016-09-28 21:05:46 +0300 |
commit | 448be7a26fc1c525d467a9e39a54533b1c262582 (patch) | |
tree | 23b97589e006f7e2f905cc0626acb8308bc4b852 /src | |
parent | 8fdadba38082465cc9cf2df5e9af5436190240c6 (diff) | |
download | mate-terminal-448be7a26fc1c525d467a9e39a54533b1c262582.tar.bz2 mate-terminal-448be7a26fc1c525d467a9e39a54533b1c262582.tar.xz |
fix crash after detaching tab and then changing its title
fixes https://github.com/mate-desktop/mate-terminal/issues/131
thanks to @egmontkob for the patch:
https://git.gnome.org/browse/gnome-terminal/commit/?id=f65261a0b5d03658be3acb439976fd8af6fa28ea
Diffstat (limited to 'src')
-rw-r--r-- | src/terminal-tab-label.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/terminal-tab-label.c b/src/terminal-tab-label.c index e5c252a..1aac1e1 100644 --- a/src/terminal-tab-label.c +++ b/src/terminal-tab-label.c @@ -151,6 +151,23 @@ terminal_tab_label_constructor (GType type, } static void +terminal_tab_label_dispose (GObject *object) +{ + TerminalTabLabel *tab_label = TERMINAL_TAB_LABEL (object); + TerminalTabLabelPrivate *priv = tab_label->priv; + + if (priv->screen != NULL) { + g_signal_handlers_disconnect_by_func (priv->screen, + G_CALLBACK (sync_tab_label), + priv->label); + g_object_unref (priv->screen); + priv->screen = NULL; + } + + G_OBJECT_CLASS (terminal_tab_label_parent_class)->dispose (object); +} + +static void terminal_tab_label_finalize (GObject *object) { // TerminalTabLabel *tab_label = TERMINAL_TAB_LABEL (object); @@ -170,7 +187,7 @@ terminal_tab_label_set_property (GObject *object, switch (prop_id) { case PROP_SCREEN: - priv->screen = g_value_get_object (value); + priv->screen = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -185,6 +202,7 @@ terminal_tab_label_class_init (TerminalTabLabelClass *klass) GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gobject_class->constructor = terminal_tab_label_constructor; + gobject_class->dispose = terminal_tab_label_dispose; gobject_class->finalize = terminal_tab_label_finalize; gobject_class->set_property = terminal_tab_label_set_property; |