Disconnect signal handlers

We connect to notify::title on app-provided titlebars, but
we forgot to disconnect the signal handler when unsetting
the titlebar.
This commit is contained in:
Matthias Clasen
2013-12-10 18:21:58 -05:00
parent 73bd03c9ed
commit f08df56211

View File

@ -558,6 +558,9 @@ static void gtk_window_buildable_custom_finished (GtkBuildable *buildable,
static void ensure_state_flag_backdrop (GtkWidget *widget); static void ensure_state_flag_backdrop (GtkWidget *widget);
static void unset_titlebar (GtkWindow *window); static void unset_titlebar (GtkWindow *window);
static void on_titlebar_title_notify (GtkHeaderBar *titlebar,
GParamSpec *pspec,
GtkWindow *self);
G_DEFINE_TYPE_WITH_CODE (GtkWindow, gtk_window, GTK_TYPE_BIN, G_DEFINE_TYPE_WITH_CODE (GtkWindow, gtk_window, GTK_TYPE_BIN,
G_ADD_PRIVATE (GtkWindow) G_ADD_PRIVATE (GtkWindow)
@ -3472,6 +3475,11 @@ unset_titlebar (GtkWindow *window)
{ {
GtkWindowPrivate *priv = window->priv; GtkWindowPrivate *priv = window->priv;
if (priv->titlebar != NULL)
g_signal_handlers_disconnect_by_func (priv->titlebar,
on_titlebar_title_notify,
window);
if (priv->title_box != NULL) if (priv->title_box != NULL)
{ {
gtk_widget_unparent (priv->title_box); gtk_widget_unparent (priv->title_box);
@ -3546,8 +3554,8 @@ gdk_window_enable_csd (GtkWindow *window)
static void static void
on_titlebar_title_notify (GtkHeaderBar *titlebar, on_titlebar_title_notify (GtkHeaderBar *titlebar,
GParamSpec *pspec, GParamSpec *pspec,
GtkWindow *self) GtkWindow *self)
{ {
gtk_window_set_title_internal (self, gtk_header_bar_get_title (titlebar), gtk_window_set_title_internal (self, gtk_header_bar_get_title (titlebar),
FALSE); FALSE);