summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <ugarte@endlessm.com>2017-10-19 15:16:43 -0300
committerDaniel Boles <dboles.src@gmail.com>2018-04-22 16:11:01 +0100
commit9ae6d092343bdc42ee4ab3fd0d9827c2e95c3d34 (patch)
tree0e7b82402589ea015ba7a069d7085ea28aa7a053
parent21fddc3994e5405cc914fd427aa8572f652d05aa (diff)
downloadgtk+-9ae6d092343bdc42ee4ab3fd0d9827c2e95c3d34.tar.gz
a11y/ScrolledWin|IconView: Connect signals safely
Use g_signal_connect_data() instead of g_signal_connect_object() to make sure the callback gets disconnected when the data object is destroyed. This avoids problems in garbage-collected bindings. https://bugzilla.gnome.org/show_bug.cgi?id=789215
-rw-r--r--gtk/a11y/gtkiconviewaccessible.c24
-rw-r--r--gtk/a11y/gtkscrolledwindowaccessible.c12
2 files changed, 18 insertions, 18 deletions
diff --git a/gtk/a11y/gtkiconviewaccessible.c b/gtk/a11y/gtkiconviewaccessible.c
index eb85522d87..e8a3aa780f 100644
--- a/gtk/a11y/gtkiconviewaccessible.c
+++ b/gtk/a11y/gtkiconviewaccessible.c
@@ -1226,18 +1226,18 @@ gtk_icon_view_accessible_connect_model_signals (GtkIconView *icon_view)
GObject *obj;
obj = G_OBJECT (icon_view->priv->model);
- g_signal_connect_data (obj, "row-changed",
- (GCallback) gtk_icon_view_accessible_model_row_changed,
- icon_view, NULL, 0);
- g_signal_connect_data (obj, "row-inserted",
- (GCallback) gtk_icon_view_accessible_model_row_inserted,
- icon_view, NULL, G_CONNECT_AFTER);
- g_signal_connect_data (obj, "row-deleted",
- (GCallback) gtk_icon_view_accessible_model_row_deleted,
- icon_view, NULL, G_CONNECT_AFTER);
- g_signal_connect_data (obj, "rows-reordered",
- (GCallback) gtk_icon_view_accessible_model_rows_reordered,
- icon_view, NULL, G_CONNECT_AFTER);
+ g_signal_connect_object (obj, "row-changed",
+ G_CALLBACK (gtk_icon_view_accessible_model_row_changed),
+ icon_view, 0);
+ g_signal_connect_object (obj, "row-inserted",
+ G_CALLBACK (gtk_icon_view_accessible_model_row_inserted),
+ icon_view, G_CONNECT_AFTER);
+ g_signal_connect_object (obj, "row-deleted",
+ G_CALLBACK (gtk_icon_view_accessible_model_row_deleted),
+ icon_view, G_CONNECT_AFTER);
+ g_signal_connect_object (obj, "rows-reordered",
+ G_CALLBACK (gtk_icon_view_accessible_model_rows_reordered),
+ icon_view, G_CONNECT_AFTER);
}
static void
diff --git a/gtk/a11y/gtkscrolledwindowaccessible.c b/gtk/a11y/gtkscrolledwindowaccessible.c
index 488cf7a9ea..80fb5b75b4 100644
--- a/gtk/a11y/gtkscrolledwindowaccessible.c
+++ b/gtk/a11y/gtkscrolledwindowaccessible.c
@@ -92,12 +92,12 @@ gtk_scrolled_window_accessible_initialize (AtkObject *obj,
window = GTK_SCROLLED_WINDOW (data);
- g_signal_connect_data (gtk_scrolled_window_get_hscrollbar (window), "notify::visible",
- G_CALLBACK (visibility_changed),
- obj, NULL, FALSE);
- g_signal_connect_data (gtk_scrolled_window_get_vscrollbar (window), "notify::visible",
- G_CALLBACK (visibility_changed),
- obj, NULL, FALSE);
+ g_signal_connect_object (gtk_scrolled_window_get_hscrollbar (window), "notify::visible",
+ G_CALLBACK (visibility_changed),
+ obj, 0);
+ g_signal_connect_object (gtk_scrolled_window_get_vscrollbar (window), "notify::visible",
+ G_CALLBACK (visibility_changed),
+ obj, 0);
obj->role = ATK_ROLE_SCROLL_PANE;
}