summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-05-09 12:03:11 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-05-11 12:19:37 -0400
commit8f9c3ed44a2ea1a2e622d3e5cda923b74b2c0a8e (patch)
treeb44f590a0f5cfc7d7e720304821009dbfae9e200
parent9ce7b16dd8173afb94aaf7c374dfb6b69c98c135 (diff)
downloadgtk+-8f9c3ed44a2ea1a2e622d3e5cda923b74b2c0a8e.tar.gz
Stop using gtk_widget_destroyed
Replace all internal use of gtk_widget_destroyed by g_object_add_weak_pointer.
-rw-r--r--demos/gtk-demo/assistant.c3
-rw-r--r--demos/gtk-demo/builder.c3
-rw-r--r--demos/gtk-demo/clipboard.c4
-rw-r--r--demos/gtk-demo/combobox.c4
-rw-r--r--demos/gtk-demo/constraints.c3
-rw-r--r--demos/gtk-demo/constraints2.c3
-rw-r--r--demos/gtk-demo/constraints3.c3
-rw-r--r--demos/gtk-demo/css_accordion.c3
-rw-r--r--demos/gtk-demo/css_basics.c3
-rw-r--r--demos/gtk-demo/css_blendmodes.c2
-rw-r--r--demos/gtk-demo/css_multiplebgs.c3
-rw-r--r--demos/gtk-demo/css_pixbufs.c3
-rw-r--r--demos/gtk-demo/css_shadows.c3
-rw-r--r--demos/gtk-demo/dialog.c4
-rw-r--r--demos/gtk-demo/dnd.c4
-rw-r--r--demos/gtk-demo/editable_cells.c3
-rw-r--r--demos/gtk-demo/entry_completion.c4
-rw-r--r--demos/gtk-demo/entry_undo.c3
-rw-r--r--demos/gtk-demo/filtermodel.c3
-rw-r--r--demos/gtk-demo/fishbowl.c6
-rw-r--r--demos/gtk-demo/flowbox.c4
-rw-r--r--demos/gtk-demo/font_features.c3
-rw-r--r--demos/gtk-demo/gears.c2
-rw-r--r--demos/gtk-demo/gestures.c3
-rw-r--r--demos/gtk-demo/headerbar.c4
-rw-r--r--demos/gtk-demo/hypertext.c4
-rw-r--r--demos/gtk-demo/iconscroll.c6
-rw-r--r--demos/gtk-demo/iconview_edit.c4
-rw-r--r--demos/gtk-demo/images.c3
-rw-r--r--demos/gtk-demo/infobar.c3
-rw-r--r--demos/gtk-demo/links.c3
-rw-r--r--demos/gtk-demo/list_store.c4
-rw-r--r--demos/gtk-demo/listbox.c9
-rw-r--r--demos/gtk-demo/markup.c3
-rw-r--r--demos/gtk-demo/modelbutton.c3
-rw-r--r--demos/gtk-demo/overlay.c4
-rw-r--r--demos/gtk-demo/overlay2.c4
-rw-r--r--demos/gtk-demo/pagesetup.c2
-rw-r--r--demos/gtk-demo/paint.c5
-rw-r--r--demos/gtk-demo/panes.c4
-rw-r--r--demos/gtk-demo/password_entry.c3
-rw-r--r--demos/gtk-demo/peg_solitaire.c3
-rw-r--r--demos/gtk-demo/pickers.c4
-rw-r--r--demos/gtk-demo/pixbufs.c4
-rw-r--r--demos/gtk-demo/rotated_text.c3
-rw-r--r--demos/gtk-demo/scale.c3
-rw-r--r--demos/gtk-demo/search_entry2.c4
-rw-r--r--demos/gtk-demo/shortcut_triggers.c4
-rw-r--r--demos/gtk-demo/shortcuts.c3
-rw-r--r--demos/gtk-demo/sidebar.c4
-rw-r--r--demos/gtk-demo/sizegroup.c3
-rw-r--r--demos/gtk-demo/sliding_puzzle.c3
-rw-r--r--demos/gtk-demo/spinbutton.c3
-rw-r--r--demos/gtk-demo/spinner.c3
-rw-r--r--demos/gtk-demo/stack.c3
-rw-r--r--demos/gtk-demo/tabs.c4
-rw-r--r--demos/gtk-demo/tagged_entry.c3
-rw-r--r--demos/gtk-demo/textmask.c4
-rw-r--r--demos/gtk-demo/textscroll.c3
-rw-r--r--demos/gtk-demo/textundo.c7
-rw-r--r--demos/gtk-demo/textview.c7
-rw-r--r--demos/gtk-demo/themes.c6
-rw-r--r--demos/gtk-demo/theming_style_classes.c3
-rw-r--r--demos/gtk-demo/transparent.c4
-rw-r--r--demos/gtk-demo/tree_store.c3
-rw-r--r--demos/gtk-demo/video_player.c3
-rw-r--r--gtk/gtkmountoperation.c14
-rw-r--r--gtk/gtkwindow.c124
-rw-r--r--tests/testgtk.c222
69 files changed, 187 insertions, 414 deletions
diff --git a/demos/gtk-demo/assistant.c b/demos/gtk-demo/assistant.c
index b1c285f0e8..13011caa4e 100644
--- a/demos/gtk-demo/assistant.c
+++ b/demos/gtk-demo/assistant.c
@@ -178,8 +178,7 @@ do_assistant (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (assistant),
gtk_widget_get_display (do_widget));
- g_signal_connect (assistant, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &assistant);
+ g_object_add_weak_pointer (G_OBJECT (assistant), (gpointer *)&assistant);
create_page1 (assistant);
create_page2 (assistant);
diff --git a/demos/gtk-demo/builder.c b/demos/gtk-demo/builder.c
index 35714f2351..709e1465e6 100644
--- a/demos/gtk-demo/builder.c
+++ b/demos/gtk-demo/builder.c
@@ -74,8 +74,7 @@ do_builder (GtkWidget *do_widget)
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
actions = (GActionGroup*)g_simple_action_group_new ();
g_action_map_add_action_entries (G_ACTION_MAP (actions),
win_entries, G_N_ELEMENTS (win_entries),
diff --git a/demos/gtk-demo/clipboard.c b/demos/gtk-demo/clipboard.c
index 801baaa173..c00f95f0f6 100644
--- a/demos/gtk-demo/clipboard.c
+++ b/demos/gtk-demo/clipboard.c
@@ -108,9 +108,7 @@ do_clipboard (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Clipboard");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_margin_start (vbox, 8);
diff --git a/demos/gtk-demo/combobox.c b/demos/gtk-demo/combobox.c
index 946267cc66..318f8bdfd0 100644
--- a/demos/gtk-demo/combobox.c
+++ b/demos/gtk-demo/combobox.c
@@ -315,9 +315,7 @@ do_combobox (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Combo Boxes");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
gtk_widget_set_margin_start (vbox, 10);
diff --git a/demos/gtk-demo/constraints.c b/demos/gtk-demo/constraints.c
index 306d4b340c..23aa0c57d0 100644
--- a/demos/gtk-demo/constraints.c
+++ b/demos/gtk-demo/constraints.c
@@ -263,8 +263,7 @@ do_constraints (GtkWidget *do_widget)
header = gtk_header_bar_new ();
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
gtk_window_set_titlebar (GTK_WINDOW (window), header);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_window_set_child (GTK_WINDOW (window), box);
diff --git a/demos/gtk-demo/constraints2.c b/demos/gtk-demo/constraints2.c
index bd2f373e0f..e11d9a3f59 100644
--- a/demos/gtk-demo/constraints2.c
+++ b/demos/gtk-demo/constraints2.c
@@ -219,8 +219,7 @@ do_constraints2 (GtkWidget *do_widget)
header = gtk_header_bar_new ();
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
gtk_window_set_titlebar (GTK_WINDOW (window), header);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_window_set_child (GTK_WINDOW (window), box);
diff --git a/demos/gtk-demo/constraints3.c b/demos/gtk-demo/constraints3.c
index a534a905f7..a92153633b 100644
--- a/demos/gtk-demo/constraints3.c
+++ b/demos/gtk-demo/constraints3.c
@@ -139,8 +139,7 @@ do_constraints3 (GtkWidget *do_widget)
header = gtk_header_bar_new ();
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
gtk_window_set_titlebar (GTK_WINDOW (window), header);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_window_set_child (GTK_WINDOW (window), box);
diff --git a/demos/gtk-demo/css_accordion.c b/demos/gtk-demo/css_accordion.c
index d28262def0..18d50f9caf 100644
--- a/demos/gtk-demo/css_accordion.c
+++ b/demos/gtk-demo/css_accordion.c
@@ -28,8 +28,7 @@ do_css_accordion (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "CSS Accordion");
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 600, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
diff --git a/demos/gtk-demo/css_basics.c b/demos/gtk-demo/css_basics.c
index 2f46c4f38b..bba89fcddc 100644
--- a/demos/gtk-demo/css_basics.c
+++ b/demos/gtk-demo/css_basics.c
@@ -76,8 +76,7 @@ do_css_basics (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "CSS Basics");
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
text = gtk_text_buffer_new (NULL);
gtk_text_buffer_create_tag (text,
diff --git a/demos/gtk-demo/css_blendmodes.c b/demos/gtk-demo/css_blendmodes.c
index 86fc0ecc91..6f2b576f18 100644
--- a/demos/gtk-demo/css_blendmodes.c
+++ b/demos/gtk-demo/css_blendmodes.c
@@ -125,7 +125,7 @@ do_css_blendmodes (GtkWidget *do_widget)
window = WID ("window");
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
/* Setup the CSS provider for window */
provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
diff --git a/demos/gtk-demo/css_multiplebgs.c b/demos/gtk-demo/css_multiplebgs.c
index 5e29060d85..d3436bf6c2 100644
--- a/demos/gtk-demo/css_multiplebgs.c
+++ b/demos/gtk-demo/css_multiplebgs.c
@@ -90,8 +90,7 @@ do_css_multiplebgs (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Multiple Backgrounds");
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
container = gtk_overlay_new ();
gtk_window_set_child (GTK_WINDOW (window), container);
diff --git a/demos/gtk-demo/css_pixbufs.c b/demos/gtk-demo/css_pixbufs.c
index 9d88ef76fa..a12142dd47 100644
--- a/demos/gtk-demo/css_pixbufs.c
+++ b/demos/gtk-demo/css_pixbufs.c
@@ -76,8 +76,7 @@ do_css_pixbufs (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Animated Backgrounds");
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
gtk_window_set_child (GTK_WINDOW (window), paned);
diff --git a/demos/gtk-demo/css_shadows.c b/demos/gtk-demo/css_shadows.c
index de21cfae29..db2f5ac521 100644
--- a/demos/gtk-demo/css_shadows.c
+++ b/demos/gtk-demo/css_shadows.c
@@ -95,8 +95,7 @@ do_css_shadows (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Shadows");
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
gtk_window_set_child (GTK_WINDOW (window), paned);
diff --git a/demos/gtk-demo/dialog.c b/demos/gtk-demo/dialog.c
index 6b965b9d84..ec42d4ee85 100644
--- a/demos/gtk-demo/dialog.c
+++ b/demos/gtk-demo/dialog.c
@@ -109,9 +109,7 @@ do_dialog (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Dialogs and Message Boxes");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
frame = gtk_frame_new ("Dialogs");
gtk_widget_set_margin_start (frame, 8);
diff --git a/demos/gtk-demo/dnd.c b/demos/gtk-demo/dnd.c
index 30bae48e17..fd26c9e77a 100644
--- a/demos/gtk-demo/dnd.c
+++ b/demos/gtk-demo/dnd.c
@@ -438,9 +438,7 @@ do_dnd (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Drag-and-Drop");
gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_window_set_child (GTK_WINDOW (window), box);
diff --git a/demos/gtk-demo/editable_cells.c b/demos/gtk-demo/editable_cells.c
index cb0ff0abfa..7c28dc2060 100644
--- a/demos/gtk-demo/editable_cells.c
+++ b/demos/gtk-demo/editable_cells.c
@@ -352,8 +352,7 @@ do_editable_cells (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Editable Cells");
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_widget_set_margin_start (vbox, 5);
diff --git a/demos/gtk-demo/entry_completion.c b/demos/gtk-demo/entry_completion.c
index d371afc451..27ad6730d9 100644
--- a/demos/gtk-demo/entry_completion.c
+++ b/demos/gtk-demo/entry_completion.c
@@ -50,9 +50,7 @@ do_entry_completion (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Entry Completion");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_widget_set_margin_start (vbox, 5);
diff --git a/demos/gtk-demo/entry_undo.c b/demos/gtk-demo/entry_undo.c
index 9d069aeafb..cab5ac0291 100644
--- a/demos/gtk-demo/entry_undo.c
+++ b/demos/gtk-demo/entry_undo.c
@@ -25,8 +25,7 @@ do_entry_undo (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Entry Undo");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_widget_set_margin_start (vbox, 5);
diff --git a/demos/gtk-demo/filtermodel.c b/demos/gtk-demo/filtermodel.c
index 0cb87d6a4e..6933cc57a2 100644
--- a/demos/gtk-demo/filtermodel.c
+++ b/demos/gtk-demo/filtermodel.c
@@ -125,8 +125,7 @@ do_filtermodel (GtkWidget *do_widget)
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
store = (GtkListStore*)gtk_builder_get_object (builder, "liststore1");
diff --git a/demos/gtk-demo/fishbowl.c b/demos/gtk-demo/fishbowl.c
index 60ec2b5c28..195746d91c 100644
--- a/demos/gtk-demo/fishbowl.c
+++ b/demos/gtk-demo/fishbowl.c
@@ -273,15 +273,13 @@ do_fishbowl (GtkWidget *do_widget)
builder = gtk_builder_new_from_resource ("/fishbowl/fishbowl.ui");
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
bowl = GTK_WIDGET (gtk_builder_get_object (builder, "bowl"));
selected_widget_type = -1;
set_widget_type (GTK_FISHBOWL (bowl), 0);
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
gtk_widget_realize (window);
g_object_unref (builder);
diff --git a/demos/gtk-demo/flowbox.c b/demos/gtk-demo/flowbox.c
index fd87463b89..3d8641c90e 100644
--- a/demos/gtk-demo/flowbox.c
+++ b/demos/gtk-demo/flowbox.c
@@ -724,9 +724,7 @@ do_flowbox (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Flow Box");
gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
scrolled = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
diff --git a/demos/gtk-demo/font_features.c b/demos/gtk-demo/font_features.c
index f009da03f1..99cd083bac 100644
--- a/demos/gtk-demo/font_features.c
+++ b/demos/gtk-demo/font_features.c
@@ -1333,8 +1333,7 @@ do_font_features (GtkWidget *do_widget)
font_features_font_changed ();
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_object_unref (builder);
diff --git a/demos/gtk-demo/gears.c b/demos/gtk-demo/gears.c
index bf455b3901..e276d6209e 100644
--- a/demos/gtk-demo/gears.c
+++ b/demos/gtk-demo/gears.c
@@ -85,7 +85,7 @@ do_gears (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Gears");
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
gtk_window_set_default_size (GTK_WINDOW (window), 640, 640);
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
overlay = gtk_overlay_new ();
gtk_widget_set_margin_start (overlay, 12);
diff --git a/demos/gtk-demo/gestures.c b/demos/gtk-demo/gestures.c
index f238da1666..a001b1908b 100644
--- a/demos/gtk-demo/gestures.c
+++ b/demos/gtk-demo/gestures.c
@@ -149,8 +149,7 @@ do_gestures (GtkWidget *do_widget)
window = gtk_window_new ();
gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
gtk_window_set_title (GTK_WINDOW (window), "Gestures");
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
drawing_area = gtk_drawing_area_new ();
gtk_window_set_child (GTK_WINDOW (window), drawing_area);
diff --git a/demos/gtk-demo/headerbar.c b/demos/gtk-demo/headerbar.c
index e8a0ead1a9..3a20d14ab3 100644
--- a/demos/gtk-demo/headerbar.c
+++ b/demos/gtk-demo/headerbar.c
@@ -25,8 +25,8 @@ do_headerbar (GtkWidget *do_widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Welcome to Facebook - Log in, sign up or learn more");
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
header = gtk_header_bar_new ();
diff --git a/demos/gtk-demo/hypertext.c b/demos/gtk-demo/hypertext.c
index 9191cabe49..e85da1b776 100644
--- a/demos/gtk-demo/hypertext.c
+++ b/demos/gtk-demo/hypertext.c
@@ -237,9 +237,7 @@ do_hypertext (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
view = gtk_text_view_new ();
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
diff --git a/demos/gtk-demo/iconscroll.c b/demos/gtk-demo/iconscroll.c
index 2254aa0bef..3ee06e6a21 100644
--- a/demos/gtk-demo/iconscroll.c
+++ b/demos/gtk-demo/iconscroll.c
@@ -209,12 +209,10 @@ do_iconscroll (GtkWidget *do_widget)
builder = gtk_builder_new_from_resource ("/iconscroll/iconscroll.ui");
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+
scrolledwindow = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow"));
gtk_widget_realize (window);
hadjustment = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "hadjustment"));
diff --git a/demos/gtk-demo/iconview_edit.c b/demos/gtk-demo/iconview_edit.c
index 6e5c52d2a6..bba6a75c97 100644
--- a/demos/gtk-demo/iconview_edit.c
+++ b/demos/gtk-demo/iconview_edit.c
@@ -111,9 +111,7 @@ do_iconview_edit (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Editing and Drag-and-Drop");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
store = create_store ();
fill_store (store);
diff --git a/demos/gtk-demo/images.c b/demos/gtk-demo/images.c
index b0efca8a1b..72cd574ed6 100644
--- a/demos/gtk-demo/images.c
+++ b/demos/gtk-demo/images.c
@@ -335,10 +335,9 @@ do_images (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Images");
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
- g_signal_connect (window, "destroy",
G_CALLBACK (cleanup_callback), NULL);
base_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
diff --git a/demos/gtk-demo/infobar.c b/demos/gtk-demo/infobar.c
index 92fc46b26c..d3c1464ffa 100644
--- a/demos/gtk-demo/infobar.c
+++ b/demos/gtk-demo/infobar.c
@@ -58,8 +58,7 @@ do_infobar (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Info Bars");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_margin_start (vbox, 8);
diff --git a/demos/gtk-demo/links.c b/demos/gtk-demo/links.c
index 219f096346..ae50f5a389 100644
--- a/demos/gtk-demo/links.c
+++ b/demos/gtk-demo/links.c
@@ -59,8 +59,7 @@ do_links (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Links");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
label = gtk_label_new ("Some <a href=\"http://en.wikipedia.org/wiki/Text\""
"title=\"plain text\">text</a> may be marked up "
diff --git a/demos/gtk-demo/list_store.c b/demos/gtk-demo/list_store.c
index 941548318c..b96723d7ee 100644
--- a/demos/gtk-demo/list_store.c
+++ b/demos/gtk-demo/list_store.c
@@ -257,9 +257,7 @@ do_list_store (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "List Store");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
gtk_widget_set_margin_start (vbox, 8);
diff --git a/demos/gtk-demo/listbox.c b/demos/gtk-demo/listbox.c
index fe9c3e2fd3..92514082cd 100644
--- a/demos/gtk-demo/listbox.c
+++ b/demos/gtk-demo/listbox.c
@@ -351,13 +351,8 @@ do_listbox (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "List Box");
- gtk_window_set_default_size (GTK_WINDOW (window),
- 400, 600);
-
- /* NULL window variable when window is closed */
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_window_set_child (GTK_WINDOW (window), vbox);
diff --git a/demos/gtk-demo/markup.c b/demos/gtk-demo/markup.c
index 7b23ec9252..d21fba6ddf 100644
--- a/demos/gtk-demo/markup.c
+++ b/demos/gtk-demo/markup.c
@@ -58,8 +58,7 @@ do_markup (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
stack = gtk_stack_new ();
gtk_widget_show (stack);
diff --git a/demos/gtk-demo/modelbutton.c b/demos/gtk-demo/modelbutton.c
index a0299228b5..01d321a298 100644
--- a/demos/gtk-demo/modelbutton.c
+++ b/demos/gtk-demo/modelbutton.c
@@ -43,8 +43,7 @@ do_modelbutton (GtkWidget *do_widget)
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
actions = (GActionGroup*)g_simple_action_group_new ();
g_action_map_add_action_entries (G_ACTION_MAP (actions),
diff --git a/demos/gtk-demo/overlay.c b/demos/gtk-demo/overlay.c
index ae1391a96d..8b5a82b175 100644
--- a/demos/gtk-demo/overlay.c
+++ b/demos/gtk-demo/overlay.c
@@ -79,9 +79,7 @@ do_overlay (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (vbox), entry);
gtk_window_set_child (GTK_WINDOW (window), overlay);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
}
if (!gtk_widget_get_visible (window))
diff --git a/demos/gtk-demo/overlay2.c b/demos/gtk-demo/overlay2.c
index 1cfc2d1798..5746f377d5 100644
--- a/demos/gtk-demo/overlay2.c
+++ b/demos/gtk-demo/overlay2.c
@@ -60,9 +60,7 @@ do_overlay2 (GtkWidget *do_widget)
gtk_window_set_child (GTK_WINDOW (window), overlay);
gtk_overlay_set_child (GTK_OVERLAY (overlay), sw);
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), text);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
image = gtk_picture_new_for_resource ("/overlay2/decor1.png");
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), image);
diff --git a/demos/gtk-demo/pagesetup.c b/demos/gtk-demo/pagesetup.c
index f169bae5c5..b440a1735a 100644
--- a/demos/gtk-demo/pagesetup.c
+++ b/demos/gtk-demo/pagesetup.c
@@ -22,7 +22,7 @@ do_pagesetup (GtkWidget *do_widget)
if (!window)
{
window = gtk_page_setup_unix_dialog_new ("Page Setup", GTK_WINDOW (do_widget));
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_signal_connect (window, "response", G_CALLBACK (done_cb), NULL);
}
diff --git a/demos/gtk-demo/paint.c b/demos/gtk-demo/paint.c
index a13750801e..e25efc5095 100644
--- a/demos/gtk-demo/paint.c
+++ b/demos/gtk-demo/paint.c
@@ -405,10 +405,7 @@ do_paint (GtkWidget *toplevel)
gtk_header_bar_pack_end (GTK_HEADER_BAR (headerbar), colorbutton);
gtk_window_set_titlebar (GTK_WINDOW (window), headerbar);
gtk_window_set_title (GTK_WINDOW (window), "Paint");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
-
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
}
if (!gtk_widget_get_visible (window))
diff --git a/demos/gtk-demo/panes.c b/demos/gtk-demo/panes.c
index 6a5c9bc59e..cca999a93b 100644
--- a/demos/gtk-demo/panes.c
+++ b/demos/gtk-demo/panes.c
@@ -152,9 +152,7 @@ do_panes (GtkWidget *do_widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Paned Widgets");
diff --git a/demos/gtk-demo/password_entry.c b/demos/gtk-demo/password_entry.c
index f8246dd4a4..04867237c6 100644
--- a/demos/gtk-demo/password_entry.c
+++ b/demos/gtk-demo/password_entry.c
@@ -45,8 +45,7 @@ do_password_entry (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Choose a Password");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
gtk_window_set_deletable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_widget_set_margin_start (box, 18);
diff --git a/demos/gtk-demo/peg_solitaire.c b/demos/gtk-demo/peg_solitaire.c
index 00fdca3d56..a408d444bd 100644
--- a/demos/gtk-demo/peg_solitaire.c
+++ b/demos/gtk-demo/peg_solitaire.c
@@ -284,8 +284,7 @@ do_peg_solitaire (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Peg Solitaire");
gtk_window_set_titlebar (GTK_WINDOW (window), header);
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
grid = gtk_grid_new ();
gtk_widget_set_halign (grid, GTK_ALIGN_CENTER);
diff --git a/demos/gtk-demo/pickers.c b/demos/gtk-demo/pickers.c
index 5f6b3f8497..f114538ca3 100644
--- a/demos/gtk-demo/pickers.c
+++ b/demos/gtk-demo/pickers.c
@@ -18,9 +18,7 @@ do_pickers (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Pickers");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
table = gtk_grid_new ();
gtk_widget_set_margin_start (table, 20);
diff --git a/demos/gtk-demo/pixbufs.c b/demos/gtk-demo/pixbufs.c
index aece1dfb4a..d6db9230e5 100644
--- a/demos/gtk-demo/pixbufs.c
+++ b/demos/gtk-demo/pixbufs.c
@@ -179,9 +179,7 @@ do_pixbufs (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Pixbufs");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
error = NULL;
if (!load_pixbufs (&error))
diff --git a/demos/gtk-demo/rotated_text.c b/demos/gtk-demo/rotated_text.c
index b86a5e6944..8a5a6c91e5 100644
--- a/demos/gtk-demo/rotated_text.c
+++ b/demos/gtk-demo/rotated_text.c
@@ -180,8 +180,7 @@ do_rotated_text (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Rotated Text");
gtk_window_set_default_size (GTK_WINDOW (window), 4 * RADIUS, 2 * RADIUS);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
diff --git a/demos/gtk-demo/scale.c b/demos/gtk-demo/scale.c
index 55304e890e..8c36e89f34 100644
--- a/demos/gtk-demo/scale.c
+++ b/demos/gtk-demo/scale.c
@@ -21,8 +21,7 @@ do_scale (GtkWidget *do_widget)
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_object_unref (builder);
}
diff --git a/demos/gtk-demo/search_entry2.c b/demos/gtk-demo/search_entry2.c
index 5e8cb6ac8b..73e65a3743 100644
--- a/demos/gtk-demo/search_entry2.c
+++ b/demos/gtk-demo/search_entry2.c
@@ -73,9 +73,7 @@ do_search_entry2 (GtkWidget *do_widget)
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
gtk_widget_set_size_request (window, 200, -1);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_window_set_child (GTK_WINDOW (window), vbox);
diff --git a/demos/gtk-demo/shortcut_triggers.c b/demos/gtk-demo/shortcut_triggers.c
index 509a7f5514..114d8290b0 100644
--- a/demos/gtk-demo/shortcut_triggers.c
+++ b/demos/gtk-demo/shortcut_triggers.c
@@ -56,9 +56,7 @@ do_shortcut_triggers (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Shortcuts");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
list = gtk_list_box_new ();
gtk_widget_set_margin_top (list, 6);
diff --git a/demos/gtk-demo/shortcuts.c b/demos/gtk-demo/shortcuts.c
index 8182035499..cfe53aa94e 100644
--- a/demos/gtk-demo/shortcuts.c
+++ b/demos/gtk-demo/shortcuts.c
@@ -89,8 +89,7 @@ do_shortcuts (GtkWidget *do_widget)
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_object_unref (builder);
}
diff --git a/demos/gtk-demo/sidebar.c b/demos/gtk-demo/sidebar.c
index 420861f225..25bb7d9bc0 100644
--- a/demos/gtk-demo/sidebar.c
+++ b/demos/gtk-demo/sidebar.c
@@ -43,9 +43,7 @@ do_sidebar (GtkWidget *do_widget)
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR(header), TRUE);
gtk_window_set_titlebar (GTK_WINDOW(window), header);
gtk_window_set_title (GTK_WINDOW(window), "Stack Sidebar");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
sidebar = gtk_stack_sidebar_new ();
diff --git a/demos/gtk-demo/sizegroup.c b/demos/gtk-demo/sizegroup.c
index 9d12dd3551..4958addee8 100644
--- a/demos/gtk-demo/sizegroup.c
+++ b/demos/gtk-demo/sizegroup.c
@@ -104,8 +104,7 @@ do_sizegroup (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Size Groups");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_widget_set_margin_start (vbox, 5);
diff --git a/demos/gtk-demo/sliding_puzzle.c b/demos/gtk-demo/sliding_puzzle.c
index b564e200b5..b273946956 100644
--- a/demos/gtk-demo/sliding_puzzle.c
+++ b/demos/gtk-demo/sliding_puzzle.c
@@ -460,8 +460,7 @@ do_sliding_puzzle (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Sliding Puzzle");
gtk_window_set_titlebar (GTK_WINDOW (window), header);
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
frame = gtk_aspect_frame_new (0.5, 0.5, (float) gdk_paintable_get_intrinsic_aspect_ratio (puzzle), FALSE);
gtk_window_set_child (GTK_WINDOW (window), frame);
diff --git a/demos/gtk-demo/spinbutton.c b/demos/gtk-demo/spinbutton.c
index e50379a8db..8d998bb5f9 100644
--- a/demos/gtk-demo/spinbutton.c
+++ b/demos/gtk-demo/spinbutton.c
@@ -196,8 +196,7 @@ do_spinbutton (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Spin Buttons");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
adj = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "basic_adjustment"));
label = GTK_WIDGET (gtk_builder_get_object (builder, "basic_label"));
diff --git a/demos/gtk-demo/spinner.c b/demos/gtk-demo/spinner.c
index 563438a04c..160e647703 100644
--- a/demos/gtk-demo/spinner.c
+++ b/demos/gtk-demo/spinner.c
@@ -46,8 +46,7 @@ do_spinner (GtkWidget *do_widget)
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
diff --git a/demos/gtk-demo/stack.c b/demos/gtk-demo/stack.c
index 22969906f0..1796094c1f 100644
--- a/demos/gtk-demo/stack.c
+++ b/demos/gtk-demo/stack.c
@@ -21,8 +21,7 @@ do_stack (GtkWidget *do_widget)
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_object_unref (builder);
}
diff --git a/demos/gtk-demo/tabs.c b/demos/gtk-demo/tabs.c
index 0a046a594e..b54a955a23 100644
--- a/demos/gtk-demo/tabs.c
+++ b/demos/gtk-demo/tabs.c
@@ -23,9 +23,7 @@ do_tabs (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
view = gtk_text_view_new ();
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
diff --git a/demos/gtk-demo/tagged_entry.c b/demos/gtk-demo/tagged_entry.c
index 26795421bc..69c48c619a 100644
--- a/demos/gtk-demo/tagged_entry.c
+++ b/demos/gtk-demo/tagged_entry.c
@@ -72,8 +72,7 @@ do_tagged_entry (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "A tagged entry");
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
gtk_window_set_deletable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_widget_set_margin_start (box, 18);
diff --git a/demos/gtk-demo/textmask.c b/demos/gtk-demo/textmask.c
index ff66ce2961..b233f71e0a 100644
--- a/demos/gtk-demo/textmask.c
+++ b/demos/gtk-demo/textmask.c
@@ -63,9 +63,7 @@ do_textmask (GtkWidget *do_widget)
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
gtk_widget_set_size_request (window, 400, 200);
gtk_window_set_title (GTK_WINDOW (window), "Text Mask");
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
da = gtk_drawing_area_new ();
diff --git a/demos/gtk-demo/textscroll.c b/demos/gtk-demo/textscroll.c
index 02df96c7a9..6d470fe7ee 100644
--- a/demos/gtk-demo/textscroll.c
+++ b/demos/gtk-demo/textscroll.c
@@ -182,8 +182,7 @@ do_textscroll (GtkWidget *do_widget)
window = gtk_window_new ();
gtk_window_set_title (GTK_WINDOW (window), "Automatic Scrolling");
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
diff --git a/demos/gtk-demo/textundo.c b/demos/gtk-demo/textundo.c
index d7e35e0851..e6b99c202e 100644
--- a/demos/gtk-demo/textundo.c
+++ b/demos/gtk-demo/textundo.c
@@ -26,11 +26,8 @@ do_textundo (GtkWidget *do_widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- gtk_window_set_default_size (GTK_WINDOW (window),
- 450, 450);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "TextView Undo");
diff --git a/demos/gtk-demo/textview.c b/demos/gtk-demo/textview.c
index 68e0b35c20..d1c3c2fb7f 100644
--- a/demos/gtk-demo/textview.c
+++ b/demos/gtk-demo/textview.c
@@ -477,11 +477,8 @@ do_textview (GtkWidget *do_widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- gtk_window_set_default_size (GTK_WINDOW (window),
- 450, 450);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Multiple Views");
diff --git a/demos/gtk-demo/themes.c b/demos/gtk-demo/themes.c
index 88191aa157..8f6eeca084 100644
--- a/demos/gtk-demo/themes.c
+++ b/demos/gtk-demo/themes.c
@@ -178,12 +178,10 @@ do_themes (GtkWidget *do_widget)
builder = gtk_builder_new_from_resource ("/themes/themes.ui");
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+
header = GTK_WIDGET (gtk_builder_get_object (builder, "header"));
gesture = gtk_gesture_click_new ();
g_signal_connect (gesture, "pressed", G_CALLBACK (clicked), builder);
diff --git a/demos/gtk-demo/theming_style_classes.c b/demos/gtk-demo/theming_style_classes.c
index db91d92c5c..ed0aef2dd0 100644
--- a/demos/gtk-demo/theming_style_classes.c
+++ b/demos/gtk-demo/theming_style_classes.c
@@ -25,8 +25,7 @@ do_theming_style_classes (GtkWidget *do_widget)
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Style Classes");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
builder = gtk_builder_new_from_resource ("/theming_style_classes/theming.ui");
diff --git a/demos/gtk-demo/transparent.c b/demos/gtk-demo/transparent.c
index 6d2c010c10..9f76e61784 100644
--- a/demos/gtk-demo/transparent.c
+++ b/demos/gtk-demo/transparent.c
@@ -22,9 +22,7 @@ do_transparent (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Transparency");
diff --git a/demos/gtk-demo/tree_store.c b/demos/gtk-demo/tree_store.c
index f39b409718..2a37c30a42 100644
--- a/demos/gtk-demo/tree_store.c
+++ b/demos/gtk-demo/tree_store.c
@@ -394,8 +394,7 @@ do_tree_store (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Tree Store");
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
gtk_widget_set_margin_start (vbox, 8);
diff --git a/demos/gtk-demo/video_player.c b/demos/gtk-demo/video_player.c
index 6a40204c24..bf35eb6446 100644
--- a/demos/gtk-demo/video_player.c
+++ b/demos/gtk-demo/video_player.c
@@ -67,8 +67,7 @@ do_video_player (GtkWidget *do_widget)
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Video Player");
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
video = gtk_video_new ();
gtk_window_set_child (GTK_WINDOW (window), video);
diff --git a/gtk/gtkmountoperation.c b/gtk/gtkmountoperation.c
index e58bae6ac6..bd7105b9bd 100644
--- a/gtk/gtkmountoperation.c
+++ b/gtk/gtkmountoperation.c
@@ -219,6 +219,13 @@ gtk_mount_operation_init (GtkMountOperation *operation)
}
static void
+parent_destroyed (GtkWidget *parent,
+ gpointer **pointer)
+{
+ *pointer = NULL;
+}
+
+static void
gtk_mount_operation_finalize (GObject *object)
{
GtkMountOperation *operation = GTK_MOUNT_OPERATION (object);
@@ -230,7 +237,7 @@ gtk_mount_operation_finalize (GObject *object)
if (priv->parent_window)
{
g_signal_handlers_disconnect_by_func (priv->parent_window,
- gtk_widget_destroyed,
+ parent_destroyed,
&priv->parent_window);
g_object_unref (priv->parent_window);
}
@@ -1835,7 +1842,7 @@ gtk_mount_operation_set_parent (GtkMountOperation *op,
if (priv->parent_window)
{
g_signal_handlers_disconnect_by_func (priv->parent_window,
- gtk_widget_destroyed,
+ parent_destroyed,
&priv->parent_window);
g_object_unref (priv->parent_window);
}
@@ -1844,8 +1851,7 @@ gtk_mount_operation_set_parent (GtkMountOperation *op,
{
g_object_ref (priv->parent_window);
g_signal_connect (priv->parent_window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &priv->parent_window);
+ G_CALLBACK (parent_destroyed), &priv->parent_window);
}
if (priv->dialog)
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index fc949183cc..decfa1778b 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -2410,41 +2410,20 @@ gtk_window_dispose (GObject *object)
}
static void
-parent_destroyed_callback (GtkWindow *parent, GtkWindow *child)
+gtk_window_transient_parent_destroyed (GtkWindow *parent,
+ GtkWindow *window)
{
- gtk_widget_destroy (GTK_WIDGET (child));
-}
-
-static void
-connect_parent_destroyed (GtkWindow *window)
-{
- GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
- if (priv->transient_parent)
- {
- g_signal_connect (priv->transient_parent,
- "destroy",
- G_CALLBACK (parent_destroyed_callback),
- window);
- }
-}
-
-static void
-disconnect_parent_destroyed (GtkWindow *window)
-{
- GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
+ GtkWindowPrivate *priv = gtk_window_get_instance_private (GTK_WINDOW (window));
- if (priv->transient_parent)
- {
- g_signal_handlers_disconnect_by_func (priv->transient_parent,
- parent_destroyed_callback,
- window);
- }
+ if (priv->destroy_with_parent)
+ gtk_widget_destroy (GTK_WIDGET (window));
+ else
+ priv->transient_parent = NULL;
}
static void
gtk_window_transient_parent_realized (GtkWidget *parent,
- GtkWidget *window)
+ GtkWidget *window)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (GTK_WINDOW (window));
GtkWindowPrivate *parent_priv = gtk_window_get_instance_private (GTK_WINDOW (parent));
@@ -2454,7 +2433,7 @@ gtk_window_transient_parent_realized (GtkWidget *parent,
static void
gtk_window_transient_parent_unrealized (GtkWidget *parent,
- GtkWidget *window)
+ GtkWidget *window)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (GTK_WINDOW (window));
if (_gtk_widget_get_realized (window))
@@ -2462,7 +2441,7 @@ gtk_window_transient_parent_unrealized (GtkWidget *parent,
}
static void
-gtk_window_transient_parent_display_changed (GtkWindow *parent,
+gtk_window_transient_parent_display_changed (GtkWindow *parent,
GParamSpec *pspec,
GtkWindow *window)
{
@@ -2471,7 +2450,7 @@ gtk_window_transient_parent_display_changed (GtkWindow *parent,
gtk_window_set_display (window, parent_priv->display);
}
-static void
+static void
gtk_window_unset_transient_for (GtkWindow *window)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
@@ -2479,29 +2458,25 @@ gtk_window_unset_transient_for (GtkWindow *window)
if (priv->transient_parent)
{
g_signal_handlers_disconnect_by_func (priv->transient_parent,
- gtk_window_transient_parent_realized,
- window);
+ gtk_window_transient_parent_realized,
+ window);
g_signal_handlers_disconnect_by_func (priv->transient_parent,
- gtk_window_transient_parent_unrealized,
- window);
+ gtk_window_transient_parent_unrealized,
+ window);
g_signal_handlers_disconnect_by_func (priv->transient_parent,
- gtk_window_transient_parent_display_changed,
- window);
+ gtk_window_transient_parent_display_changed,
+ window);
g_signal_handlers_disconnect_by_func (priv->transient_parent,
- gtk_widget_destroyed,
- &priv->transient_parent);
-
- if (priv->destroy_with_parent)
- disconnect_parent_destroyed (window);
+ gtk_window_transient_parent_destroyed,
+ window);
priv->transient_parent = NULL;
if (priv->transient_parent_group)
- {
- priv->transient_parent_group = FALSE;
- gtk_window_group_remove_window (priv->group,
- window);
- }
+ {
+ priv->transient_parent_group = FALSE;
+ gtk_window_group_remove_window (priv->group, window);
+ }
}
}
@@ -2524,8 +2499,8 @@ gtk_window_unset_transient_for (GtkWindow *window)
* much as the window manager would have done on X.
*/
void
-gtk_window_set_transient_for (GtkWindow *window,
- GtkWindow *parent)
+gtk_window_set_transient_for (GtkWindow *window,
+ GtkWindow *parent)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
@@ -2538,9 +2513,8 @@ gtk_window_set_transient_for (GtkWindow *window,
if (_gtk_widget_get_realized (GTK_WIDGET (window)) &&
_gtk_widget_get_realized (GTK_WIDGET (priv->transient_parent)) &&
(!parent || !_gtk_widget_get_realized (GTK_WIDGET (parent))))
- gtk_window_transient_parent_unrealized (GTK_WIDGET (priv->transient_parent),
- GTK_WIDGET (window));
-
+ gtk_window_transient_parent_unrealized (GTK_WIDGET (priv->transient_parent),
+ GTK_WIDGET (window));
gtk_window_unset_transient_for (window);
}
@@ -2549,34 +2523,27 @@ gtk_window_set_transient_for (GtkWindow *window,
if (parent)
{
GtkWindowPrivate *parent_priv = gtk_window_get_instance_private (parent);
- g_signal_connect (parent, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &priv->transient_parent);
g_signal_connect (parent, "realize",
- G_CALLBACK (gtk_window_transient_parent_realized),
- window);
+ G_CALLBACK (gtk_window_transient_parent_realized), window);
g_signal_connect (parent, "unrealize",
- G_CALLBACK (gtk_window_transient_parent_unrealized),
- window);
+ G_CALLBACK (gtk_window_transient_parent_unrealized), window);
g_signal_connect (parent, "notify::display",
- G_CALLBACK (gtk_window_transient_parent_display_changed),
- window);
+ G_CALLBACK (gtk_window_transient_parent_display_changed), window);
+ g_signal_connect (parent, "destroy",
+ G_CALLBACK (gtk_window_transient_parent_destroyed), window);
gtk_window_set_display (window, parent_priv->display);
- if (priv->destroy_with_parent)
- connect_parent_destroyed (window);
-
+
if (_gtk_widget_get_realized (GTK_WIDGET (window)) &&
- _gtk_widget_get_realized (GTK_WIDGET (parent)))
- gtk_window_transient_parent_realized (GTK_WIDGET (parent),
- GTK_WIDGET (window));
+ _gtk_widget_get_realized (GTK_WIDGET (parent)))
+ gtk_window_transient_parent_realized (GTK_WIDGET (parent), GTK_WIDGET (window));
if (parent_priv->group)
- {
- gtk_window_group_add_window (parent_priv->group, window);
- priv->transient_parent_group = TRUE;
- }
+ {
+ gtk_window_group_add_window (parent_priv->group, window);
+ priv->transient_parent_group = TRUE;
+ }
}
update_window_actions (window);
@@ -2710,8 +2677,8 @@ gtk_window_set_application (GtkWindow *window,
* associated with, for example.
**/
void
-gtk_window_set_destroy_with_parent (GtkWindow *window,
- gboolean setting)
+gtk_window_set_destroy_with_parent (GtkWindow *window,
+ gboolean setting)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
@@ -2720,15 +2687,6 @@ gtk_window_set_destroy_with_parent (GtkWindow *window,
if (priv->destroy_with_parent == (setting != FALSE))
return;
- if (priv->destroy_with_parent)
- {
- disconnect_parent_destroyed (window);
- }
- else
- {
- connect_parent_destroyed (window);
- }
-
priv->destroy_with_parent = setting;
g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_DESTROY_WITH_PARENT]);
diff --git a/tests/testgtk.c b/tests/testgtk.c
index 0d2b9b3a91..e081ff8582 100644
--- a/tests/testgtk.c
+++ b/tests/testgtk.c
@@ -227,10 +227,7 @@ create_alpha_window (GtkWidget *widget)
g_signal_connect (display, "notify::composited", G_CALLBACK (on_composited_changed), label);
gtk_container_add (GTK_CONTAINER (vbox), build_alpha_widgets ());
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy),
@@ -274,11 +271,8 @@ create_buttons (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "GtkButton");
@@ -357,11 +351,8 @@ create_toggle_buttons (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "GtkToggleButton");
@@ -476,11 +467,8 @@ create_check_buttons (GtkWidget *widget)
NULL);
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy),
NULL);
@@ -545,11 +533,8 @@ create_radio_buttons (GtkWidget *widget)
NULL);
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy),
NULL);
@@ -734,11 +719,8 @@ create_statusbar (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "statusbar");
@@ -944,11 +926,8 @@ static void create_labels (GtkWidget *widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Label");
@@ -1187,8 +1166,7 @@ create_rotated_text (GtkWidget *widget)
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
@@ -1239,11 +1217,8 @@ create_pixbuf (GtkWidget *widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "GtkPixmap");
gtk_widget_realize(window);
@@ -1426,9 +1401,7 @@ create_image (GtkWidget *widget)
*/
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
@@ -1549,7 +1522,7 @@ create_listbox (GtkWidget *widget)
gtk_window_set_hide_on_close (GTK_WINDOW (window), TRUE);
gtk_window_set_display (GTK_WINDOW (window), display);
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "listbox");
@@ -1649,7 +1622,6 @@ static void
create_key_lookup (GtkWidget *widget)
{
static GtkWidget *window = NULL;
- gpointer window_ptr;
if (!window)
{
@@ -1702,8 +1674,7 @@ create_key_lookup (GtkWidget *widget)
button = accel_button_new ("Button 14", "<Meta>a");
gtk_container_add (GTK_CONTAINER (box), button);
- window_ptr = &window;
- g_object_add_weak_pointer (G_OBJECT (window), window_ptr);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_signal_connect (window, "response", G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (window);
@@ -1857,10 +1828,7 @@ make_message_dialog (GdkDisplay *display,
G_CALLBACK (gtk_widget_destroy),
*dialog);
- g_signal_connect (*dialog,
- "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- dialog);
+ g_object_add_weak_pointer (G_OBJECT (*dialog), (gpointer)dialog);
gtk_dialog_set_default_response (GTK_DIALOG (*dialog), default_response);
@@ -1982,11 +1950,8 @@ create_scrolled_windows (GtkWidget *widget)
window = gtk_dialog_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
@@ -2132,11 +2097,8 @@ create_entry (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "entry");
@@ -2238,11 +2200,8 @@ create_expander (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "expander");
@@ -2419,21 +2378,15 @@ create_size_groups (GtkWidget *widget)
if (!window1)
{
window1 = create_size_group_window (gtk_widget_get_display (widget),
- master_size_group);
-
- g_signal_connect (window1, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window1);
+ master_size_group);
+ g_object_add_weak_pointer (G_OBJECT (window1), (gpointer *)&window1);
}
if (!window2)
{
window2 = create_size_group_window (gtk_widget_get_display (widget),
- master_size_group);
-
- g_signal_connect (window2, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window2);
+ master_size_group);
+ g_object_add_weak_pointer (G_OBJECT (window2), (gpointer *)&window2);
}
if (gtk_widget_get_visible (window1) && gtk_widget_get_visible (window2))
@@ -2639,11 +2592,8 @@ create_spins (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "GtkSpinButton");
@@ -3089,11 +3039,8 @@ create_cursors (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Cursors");
@@ -3227,14 +3174,11 @@ create_color_selection (GtkWidget *widget)
GtkWidget *picker;
GtkWidget *hbox;
GtkWidget *label;
-
+
window = gtk_window_new ();
- gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_window_set_display (GTK_WINDOW (window),
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "GtkColorButton");
@@ -3350,11 +3294,8 @@ create_flipping (GtkWidget *widget)
window = gtk_dialog_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
@@ -3411,11 +3352,8 @@ create_font_selection (GtkWidget *widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "GtkFontButton");
@@ -3496,12 +3434,8 @@ create_dialog (GtkWidget *widget)
dialog_window = gtk_dialog_new ();
gtk_window_set_display (GTK_WINDOW (dialog_window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (dialog_window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &dialog_window);
-
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (dialog_window), (gpointer *)&dialog_window);
gtk_window_set_title (GTK_WINDOW (dialog_window), "GtkDialog");
@@ -3683,11 +3617,8 @@ create_range_controls (GtkWidget *widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "range controls");
@@ -4046,11 +3977,8 @@ create_notebook (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "notebook");
@@ -4246,11 +4174,8 @@ create_panes (GtkWidget *widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Panes");
@@ -4614,33 +4539,25 @@ create_paned_keyboard_navigation (GtkWidget *widget)
if (!window1)
{
window1 = paned_keyboard_window1 (widget);
- g_signal_connect (window1, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window1);
+ g_object_add_weak_pointer (G_OBJECT (window1), (gpointer *)&window1);
}
if (!window2)
{
window2 = paned_keyboard_window2 (widget);
- g_signal_connect (window2, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window2);
+ g_object_add_weak_pointer (G_OBJECT (window2), (gpointer *)&window2);
}
if (!window3)
{
window3 = paned_keyboard_window3 (widget);
- g_signal_connect (window3, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window3);
+ g_object_add_weak_pointer (G_OBJECT (window3), (gpointer *)&window3);
}
if (!window4)
{
window4 = paned_keyboard_window4 (widget);
- g_signal_connect (window4, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window4);
+ g_object_add_weak_pointer (G_OBJECT (window4), (gpointer *)&window4);
}
if (gtk_widget_get_visible (window1))
@@ -4686,11 +4603,8 @@ create_wmhints (GtkWidget *widget)
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "WM Hints");
@@ -4921,11 +4835,8 @@ create_surface_states (GtkWidget *widget)
{
window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window),
- gtk_widget_get_display (widget));
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ gtk_widget_get_display (widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_title (GTK_WINDOW (window), "Surface states");
@@ -5193,17 +5104,12 @@ create_window_sizing (GtkWidget *widget)
gtk_label_set_markup (GTK_LABEL (label), "<span foreground=\"purple\"><big>Window being resized</big></span>\nBlah blah blah blah\nblah blah blah\nblah blah blah blah blah");
gtk_window_set_child (GTK_WINDOW (target_window), label);
gtk_widget_show (target_window);
-
- g_signal_connect (target_window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &target_window);
+
+ g_object_add_weak_pointer (G_OBJECT (target_window), (gpointer *)&target_window);
window = window_controls (target_window);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
-
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
gtk_window_set_title (GTK_WINDOW (target_window), "Window to size");
}
@@ -5947,9 +5853,7 @@ create_native_dialogs (GtkWidget *widget)
g_signal_connect (native, "notify::visible",
G_CALLBACK (native_visible_notify_hide), hide_button);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
}
if (!gtk_widget_get_visible (window))