Compare commits

...

13 Commits

Author SHA1 Message Date
Timm Bäder
b5ec55b869 gtk-demo: Don't destroy window after delete response
GTK_RESPONSE_DELETE_EVENT means that gtk will call gtk_window_destroy
itself, so we can't do it a second time.
2017-10-07 09:03:28 +02:00
Timm Bäder
b5d4ed3658 gdk: Remove unused struct 2017-10-07 08:29:11 +02:00
Timm Bäder
b27efa61bf textview: Fix popup menu refcounting 2017-10-07 08:03:42 +02:00
Timm Bäder
23f9a2fc33 nativedialog: Do not ref the transient_for parent
gtk_window_set_transient_for does not ref its parent either. This is
important because a child widget of the parent might be the one calling
thsi function.
2017-10-07 08:03:42 +02:00
Timm Bäder
4dee7989cf GtkWindow: Remove _set_has_user_ref_count 2017-10-07 08:03:42 +02:00
Timm Bäder
62f8bff4eb testdnd2: Adapt to widget changes
Don't unref() in destroy and ref_sink the drag image after creating it.
2017-10-07 08:03:42 +02:00
Timm Bäder
346aa7405b build: Add missing action-namespace example 2017-10-07 08:03:42 +02:00
Timm Bäder
f547cad474 testsuite: add widget refcount test case
testing toplevels, popovers and menus
2017-10-07 08:03:42 +02:00
Timm Bäder
4f576f6d7c widget: Remove gtk_widget_destroy 2017-10-07 08:03:42 +02:00
Timm Bäder
fcdb5d3b12 Stop using gtk_widget_destroy everywhere
Replace it either with gtk_container_remove, g_object_unref or
gtk_window_destroy.
2017-10-07 08:03:39 +02:00
Timm Bäder
2956808b21 gtk: Stop using gtk_widget_destroy 2017-10-07 07:47:38 +02:00
Timm Bäder
720356313e window: Add gtk_window_destroy
Instead of relying on the hacky g_object_run_dispose, simply do what
gtk_window_destroy should be doing: Remove the window from the internal
list of toplevels and unref it.

To be used on windows instead of gtk_widget_destroy.
2017-10-07 07:19:31 +02:00
Timm Bäder
b948a53c37 container: Add gtk_container_remove_callback
Which can be used as callback passed to gtk_container_forall.
2017-10-07 07:19:31 +02:00
208 changed files with 973 additions and 746 deletions

View File

@@ -45,7 +45,7 @@ show_action_dialog (GSimpleAction *action)
name);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (dialog);
}
@@ -118,7 +118,7 @@ open_response_cb (GtkNativeDialog *dialog,
"Error loading file: \"%s\"",
error->message);
g_signal_connect (message_dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (message_dialog);
g_error_free (error);
}
@@ -232,7 +232,7 @@ activate_quit (GSimpleAction *action,
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
gtk_window_destroy (GTK_WINDOW (win));
list = next;
}

View File

@@ -33,7 +33,6 @@ on_name_vanished (GDBusConnection *connection,
if (placeholder)
{
gtk_widget_destroy (placeholder);
g_object_unref (placeholder);
placeholder = NULL;
}

View File

@@ -27,7 +27,7 @@ apply_changes_gradually (gpointer data)
else
{
/* Close automatically once changes are fully applied. */
gtk_widget_destroy (assistant);
gtk_window_destroy (GTK_WINDOW (assistant));
assistant = NULL;
return G_SOURCE_REMOVE;
}
@@ -45,7 +45,7 @@ on_assistant_close_cancel (GtkWidget *widget, gpointer data)
{
GtkWidget **assistant = (GtkWidget **) data;
gtk_widget_destroy (*assistant);
gtk_window_destroy (GTK_WINDOW (*assistant));
*assistant = NULL;
}
@@ -192,7 +192,7 @@ do_assistant (GtkWidget *do_widget)
gtk_widget_show (assistant);
else
{
gtk_widget_destroy (assistant);
gtk_window_destroy (GTK_WINDOW (assistant));
assistant = NULL;
}

View File

@@ -12,7 +12,7 @@ quit_activate (GSimpleAction *action,
{
GtkWidget *window = user_data;
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
}
static void
@@ -118,7 +118,7 @@ do_builder (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -121,7 +121,7 @@ do_button_box (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -150,7 +150,7 @@ query_for_toplevel (GdkScreen *screen,
}
g_object_unref (cursor);
gtk_widget_destroy (popup);
gtk_window_destroy (GTK_WINDOW (popup));
gdk_flush (); /* Really release the grab */
return toplevel;
@@ -187,7 +187,7 @@ response_cb (GtkDialog *dialog,
if (response_id == GTK_RESPONSE_OK)
query_change_display (info);
else
gtk_widget_destroy (GTK_WIDGET (dialog));
gtk_window_destroy (GTK_WINDOW (dialog));
}
/* Called when the user clicks on "Open..." in the display
@@ -250,7 +250,7 @@ open_display_cb (GtkWidget *button,
}
}
gtk_widget_destroy (dialog);
gtk_window_destroy (GTK_WINDOW (dialog));
}
/* Called when the user clicks on the "Close" button in the
@@ -551,7 +551,7 @@ do_changedisplay (GtkWidget *do_widget)
}
else
{
gtk_widget_destroy (info->window);
gtk_window_destroy (GTK_WINDOW (info->window));
return NULL;
}
}

View File

@@ -324,7 +324,7 @@ do_clipboard (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -37,7 +37,7 @@ response_cb (GtkDialog *dialog,
gtk_widget_queue_draw (da);
}
gtk_widget_destroy (GTK_WIDGET (dialog));
gtk_window_destroy (GTK_WINDOW (dialog));
}
static void
@@ -110,7 +110,7 @@ do_colorsel (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -435,7 +435,7 @@ do_combobox (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -63,7 +63,7 @@ do_css_accordion (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -112,7 +112,7 @@ do_css_basics (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -140,7 +140,7 @@ do_css_blendmodes (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -151,7 +151,7 @@ do_css_multiplebgs (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -118,7 +118,7 @@ do_css_pixbufs (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -140,7 +140,7 @@ do_css_shadows (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -154,7 +154,7 @@ do_cursors (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;

View File

@@ -26,7 +26,7 @@ message_dialog_clicked (GtkButton *button,
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
"%d", i);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
gtk_window_destroy (GTK_WINDOW (dialog));
i++;
}
@@ -88,7 +88,7 @@ interactive_dialog_clicked (GtkButton *button,
gtk_entry_set_text (GTK_ENTRY (entry2), gtk_entry_get_text (GTK_ENTRY (local_entry2)));
}
gtk_widget_destroy (dialog);
gtk_window_destroy (GTK_WINDOW (dialog));
}
GtkWidget *
@@ -163,7 +163,7 @@ do_dialog (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -259,7 +259,7 @@ do_drawingarea (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -405,7 +405,7 @@ do_editable_cells (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -54,7 +54,8 @@ do_entry_buffer (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -85,7 +85,7 @@ do_entry_completion (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -662,7 +662,7 @@ do_event_axes (GtkWidget *toplevel)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -15,8 +15,11 @@ static GtkWidget *window = NULL;
static void
response_cb (GtkDialog *dialog, gint response_id)
{
gtk_widget_destroy (window);
window = NULL;
if (response_id != GTK_RESPONSE_DELETE_EVENT)
{
gtk_window_destroy (GTK_WINDOW (window));
window = NULL;
}
}
static void
@@ -83,7 +86,7 @@ do_expander (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -200,7 +200,7 @@ do_filtermodel (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -172,7 +172,7 @@ do_fishbowl (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;

View File

@@ -745,7 +745,7 @@ do_flowbox (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -524,7 +524,7 @@ do_font_features (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_window_present (GTK_WINDOW (window));
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -979,7 +979,7 @@ do_foreigndrawing (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -207,7 +207,7 @@ do_gestures (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -424,7 +424,7 @@ create_glarea_window (GtkWidget *do_widget)
button = gtk_button_new_with_label ("Quit");
gtk_widget_set_hexpand (button, TRUE);
gtk_container_add (GTK_CONTAINER (box), button);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
return window;
}
@@ -438,7 +438,7 @@ do_glarea (GtkWidget *do_widget)
if (!gtk_widget_get_visible (demo_window))
gtk_widget_show (demo_window);
else
gtk_widget_destroy (demo_window);
gtk_window_destroy (GTK_WINDOW (demo_window));
return demo_window;
}

View File

@@ -60,7 +60,7 @@ do_headerbar (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -295,7 +295,7 @@ do_hypertext (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -228,7 +228,7 @@ home_clicked (GtkToolItem *item,
static void close_window(void)
{
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
window = NULL;
g_object_unref (file_pixbuf);
@@ -329,7 +329,7 @@ do_iconview (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -152,7 +152,7 @@ do_iconview_edit (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -100,7 +100,7 @@ progressive_timeout (gpointer data)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
g_object_unref (image_stream);
image_stream = NULL;
@@ -128,7 +128,7 @@ progressive_timeout (gpointer data)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
g_object_unref (image_stream);
image_stream = NULL;
@@ -161,7 +161,7 @@ progressive_timeout (gpointer data)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (dialog);
@@ -198,7 +198,7 @@ progressive_timeout (gpointer data)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (dialog);
@@ -232,7 +232,7 @@ progressive_timeout (gpointer data)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (dialog);
@@ -436,7 +436,7 @@ do_images (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -31,7 +31,7 @@ on_bar_response (GtkInfoBar *info_bar,
g_signal_connect_swapped (dialog,
"response",
G_CALLBACK (gtk_widget_destroy),
G_CALLBACK (gtk_window_destroy),
dialog);
gtk_widget_show (dialog);
@@ -146,7 +146,7 @@ do_infobar (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -12,7 +12,7 @@ response_cb (GtkWidget *dialog,
gint response_id,
gpointer data)
{
gtk_widget_destroy (dialog);
gtk_window_destroy (GTK_WINDOW (dialog));
}
static gboolean
@@ -78,7 +78,7 @@ do_links (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -310,7 +310,7 @@ do_list_store (GtkWidget *do_widget)
}
else
{
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
window = NULL;
if (timeout != 0)
{

View File

@@ -389,7 +389,7 @@ do_listbox (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -78,7 +78,7 @@ activate_quit (GSimpleAction *action,
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
gtk_window_destroy (GTK_WINDOW (win));
list = next;
}

View File

@@ -120,7 +120,7 @@ do_markup (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -147,7 +147,7 @@ do_menus (GtkWidget *do_widget)
button = gtk_button_new_with_label ("Close");
g_signal_connect_swapped (button, "clicked",
G_CALLBACK(gtk_widget_destroy), window);
G_CALLBACK(gtk_window_destroy), window);
gtk_box_pack_start (GTK_BOX (box2), button);
gtk_widget_set_can_default (button, TRUE);
gtk_widget_grab_default (button);
@@ -157,7 +157,7 @@ do_menus (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -61,7 +61,7 @@ do_modelbutton (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;

View File

@@ -85,7 +85,7 @@ do_overlay (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -97,7 +97,7 @@ do_overlay2 (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -11,7 +11,7 @@
static void
done_cb (GtkDialog *dialog, gint response, gpointer data)
{
gtk_widget_destroy (GTK_WIDGET (dialog));
gtk_window_destroy (GTK_WINDOW (dialog));
}
GtkWidget *
@@ -29,7 +29,7 @@ do_pagesetup (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -189,7 +189,7 @@ do_panes (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -75,7 +75,7 @@ do_pickers (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -198,7 +198,7 @@ do_pixbufs (GtkWidget *do_widget)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (dialog);
}
@@ -222,7 +222,7 @@ do_pixbufs (GtkWidget *do_widget)
gtk_widget_show (window);
else
{
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
g_object_unref (frame);
}

View File

@@ -45,7 +45,7 @@ create_complex_popover (GtkWidget *parent,
g_object_ref (content);
gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (content)),
content);
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
g_object_unref (builder);
popover = create_popover (parent, content, GTK_POS_BOTTOM);
@@ -174,7 +174,7 @@ do_popover (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -188,7 +188,7 @@ do_printing (GtkWidget *do_widget)
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_widget_show (dialog);
}

View File

@@ -86,7 +86,7 @@ do_revealer (GtkWidget *do_widget)
}
else
{
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
}

View File

@@ -217,7 +217,7 @@ do_rotated_text (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -31,7 +31,7 @@ do_scale (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;

View File

@@ -291,8 +291,8 @@ do_search_entry (GtkWidget *do_widget)
gtk_widget_show (window);
else
{
gtk_widget_destroy (menu);
gtk_widget_destroy (window);
gtk_menu_detach (GTK_MENU (menu));
gtk_window_destroy (GTK_WINDOW (window));
}
return window;

View File

@@ -154,7 +154,7 @@ do_search_entry2 (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -108,7 +108,7 @@ do_shortcuts (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -82,7 +82,7 @@ do_sidebar (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -152,7 +152,7 @@ do_sizegroup (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -247,7 +247,7 @@ do_spinbutton (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -45,7 +45,7 @@ do_spinner (GtkWidget *do_widget)
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
@@ -90,7 +90,7 @@ do_spinner (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -31,7 +31,7 @@ do_stack (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;

View File

@@ -53,7 +53,7 @@ do_tabs (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -76,7 +76,7 @@ do_textmask (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -197,7 +197,7 @@ do_textscroll (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -521,7 +521,7 @@ do_textview (GtkWidget *do_widget)
}
else
{
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
window = NULL;
}

View File

@@ -38,7 +38,7 @@ do_theming_style_classes (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -623,7 +623,7 @@ do_toolpalette (GtkWidget *do_widget)
}
else
{
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
window = NULL;
}

View File

@@ -70,7 +70,7 @@ do_transparent (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -435,7 +435,7 @@ do_tree_store (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@@ -172,7 +172,7 @@ do_widgetbowl (GtkWidget *do_widget)
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
gtk_window_destroy (GTK_WINDOW (window));
return window;

View File

@@ -256,7 +256,7 @@ activate_quit (GSimpleAction *action,
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
gtk_window_destroy (GTK_WINDOW (win));
list = next;
}

View File

@@ -767,6 +767,7 @@ gtk_container_class_find_child_property
gtk_container_class_install_child_property
gtk_container_class_install_child_properties
gtk_container_class_list_child_properties
gtk_container_remove_callback
<SUBSECTION Standard>
GTK_CONTAINER
@@ -4484,7 +4485,6 @@ GtkCallback
GtkRequisition
GtkAllocation
gtk_widget_new
gtk_widget_destroy
gtk_widget_in_destruction
gtk_widget_destroyed
gtk_widget_unparent
@@ -4816,10 +4816,10 @@ gtk_window_get_focus_visible
gtk_window_set_focus_visible
gtk_window_get_application
gtk_window_set_application
gtk_window_set_has_user_ref_count
gtk_window_set_titlebar
gtk_window_get_titlebar
gtk_window_set_interactive_debugging
gtk_window_destroy
<SUBSECTION Standard>
GTK_WINDOW

View File

@@ -252,7 +252,7 @@ shoot_one (WidgetInfo *info)
{
g_warning ("unable to save shot of %s", info->name);
}
gtk_widget_destroy (info->window);
gtk_window_destroy (GTK_WINDOW (info->window));
shot_id = 0;

View File

@@ -16,7 +16,7 @@ action_activated (GSimpleAction *action,
g_action_get_name (G_ACTION (action)));
g_signal_connect_swapped (dialog, "response",
G_CALLBACK (gtk_widget_destroy), dialog);
G_CALLBACK (gtk_window_destroy), dialog);
gtk_widget_show (dialog);
}

View File

@@ -386,7 +386,7 @@ response (GtkDialog *dialog,
if (response_id == GTK_RESPONSE_CLOSE)
{
gtk_widget_destroy (GTK_WIDGET (dialog));
gtk_window_destroy (GTK_WINDOW (dialog));
return;
}

View File

@@ -42,7 +42,7 @@ activate (GtkApplication *app,
gtk_grid_attach (GTK_GRID (grid), button, 1, 0, 1, 1);
button = gtk_button_new_with_label ("Quit");
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
/* Place the Quit button in the grid cell (0, 1), and make it
* span 2 columns.

View File

@@ -24,7 +24,7 @@ activate (GtkApplication *app,
button = gtk_button_new_with_label ("Hello World");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
gtk_container_add (GTK_CONTAINER (button_box), button);
gtk_widget_show (window);

View File

@@ -1,4 +1,5 @@
examples = [
'action-namespace',
'builder',
'drawing',
'grid-packing',

View File

@@ -178,7 +178,7 @@ quit_app (GSimpleAction *action,
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
gtk_window_destroy (win);
list = next;
}
@@ -387,7 +387,7 @@ configure_plugins (GSimpleAction *action,
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), plugin_enabled ("black"));
g_signal_connect (check, "toggled", G_CALLBACK (enable_or_disable_plugin), "black");
g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
gtk_window_present (GTK_WINDOW (dialog));

View File

@@ -102,7 +102,7 @@ quit_app (GSimpleAction *action,
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
gtk_window_destroy (win);
list = next;
}

View File

@@ -50,14 +50,6 @@
*/
typedef struct _GdkIOClosure GdkIOClosure;
struct _GdkIOClosure
{
GDestroyNotify notify;
gpointer data;
};
/* Private variable declarations
*/

View File

@@ -1060,7 +1060,7 @@ gtk_about_dialog_activate_link (GtkAboutDialog *about,
g_error_free (error);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
gtk_window_present (GTK_WINDOW (dialog));
}

View File

@@ -232,13 +232,13 @@ other_application_dialog_response_cb (GtkDialog *dialog,
* 'Other application…'
*/
gtk_combo_box_set_active (GTK_COMBO_BOX (self), self->priv->last_active);
gtk_widget_destroy (GTK_WIDGET (dialog));
gtk_window_destroy (GTK_WINDOW (dialog));
return;
}
info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (dialog));
gtk_widget_destroy (GTK_WIDGET (dialog));
gtk_window_destroy (GTK_WINDOW (dialog));
/* refresh the combobox to get the new application */
gtk_app_chooser_refresh (GTK_APP_CHOOSER (self));

View File

@@ -430,7 +430,7 @@ show_error_dialog (const gchar *primary,
gtk_widget_show (message_dialog);
g_signal_connect (message_dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
G_CALLBACK (gtk_window_destroy), NULL);
}
static void

View File

@@ -251,7 +251,7 @@ widget_button_press_event_cb (GtkWidget *widget,
return FALSE;
if (self->priv->popup_menu)
gtk_widget_destroy (self->priv->popup_menu);
gtk_window_destroy (GTK_WINDOW (self->priv->popup_menu));
self->priv->popup_menu = menu = gtk_menu_new ();
gtk_menu_attach_to_widget (GTK_MENU (menu), GTK_WIDGET (self), popup_menu_detach);

View File

@@ -758,7 +758,7 @@ gtk_application_window_dispose (GObject *object)
if (window->priv->help_overlay)
{
gtk_widget_destroy (GTK_WIDGET (window->priv->help_overlay));
gtk_window_destroy (GTK_WINDOW (window->priv->help_overlay));
g_clear_object (&window->priv->help_overlay);
}
@@ -961,7 +961,7 @@ gtk_application_window_set_help_overlay (GtkApplicationWindow *window,
g_return_if_fail (help_overlay == NULL || GTK_IS_SHORTCUTS_WINDOW (help_overlay));
if (window->priv->help_overlay)
gtk_widget_destroy (GTK_WIDGET (window->priv->help_overlay));
gtk_window_destroy (GTK_WINDOW (window->priv->help_overlay));
g_set_object (&window->priv->help_overlay, help_overlay);
if (!window->priv->help_overlay)

View File

@@ -39,14 +39,14 @@
* and drops these references when it is finalized. This finalization can
* cause the destruction of non-widget objects or widgets which are not
* contained in a toplevel window. For toplevel windows constructed by a
* builder, it is the responsibility of the user to call gtk_widget_destroy()
* builder, it is the responsibility of the user to call gtk_window_destroy()
* to get rid of them and all the widgets they contain.
*
* The functions gtk_builder_get_object() and gtk_builder_get_objects()
* can be used to access the widgets in the interface by the names assigned
* to them inside the UI description. Toplevel windows returned by these
* functions will stay around until the user explicitly destroys them
* with gtk_widget_destroy(). Other widgets will either be part of a
* with gtk_window_destroy(). Other widgets will either be part of a
* larger hierarchy constructed by the builder (in which case you should
* not have to worry about their lifecycle), or without a parent, in which
* case they have to be added to some container to make use of them.

View File

@@ -437,6 +437,7 @@ make_clipboard_widget (GdkDisplay *display,
gboolean provider)
{
GtkWidget *widget = gtk_invisible_new_for_screen (gdk_display_get_default_screen (display));
g_object_ref_sink (widget);
g_signal_connect (widget, "selection-received",
G_CALLBACK (selection_received), NULL);
@@ -964,7 +965,7 @@ selection_received (GtkWidget *widget,
g_free (request_info);
if (widget != get_clipboard_widget (gtk_widget_get_display (widget)))
gtk_widget_destroy (widget);
g_object_unref (G_OBJECT (widget));
}
/**

View File

@@ -443,7 +443,7 @@ gtk_color_button_finalize (GObject *object)
GtkColorButtonPrivate *priv = button->priv;
if (priv->cs_dialog != NULL)
gtk_widget_destroy (priv->cs_dialog);
gtk_window_destroy (GTK_WINDOW (priv->cs_dialog));
g_free (priv->title);
gtk_widget_unparent (priv->button);

View File

@@ -739,7 +739,7 @@ add_custom_color (GtkColorChooserWidget *cc,
if (last == GTK_WIDGET (cc->priv->current))
cc->priv->current = NULL;
gtk_widget_destroy (last);
gtk_container_remove (GTK_CONTAINER (cc->priv->custom), last);
}
g_list_free (children);

View File

@@ -509,7 +509,7 @@ swatch_dispose (GObject *object)
if (swatch->priv->popover)
{
gtk_widget_destroy (swatch->priv->popover);
g_object_unref (G_OBJECT (swatch->priv->popover));
swatch->priv->popover = NULL;
}

View File

@@ -1592,7 +1592,7 @@ gtk_container_destroy (GtkWidget *widget)
if (priv->has_focus_chain)
gtk_container_unset_focus_chain (container);
gtk_container_foreach (container, (GtkCallback) gtk_widget_destroy, NULL);
gtk_container_foreach (container, (GtkCallback) gtk_container_remove_callback, container);
GTK_WIDGET_CLASS (parent_class)->destroy (widget);
}
@@ -1652,10 +1652,7 @@ gtk_container_add (GtkContainer *container,
* may be the last reference held; so removing a widget from its
* container can destroy that widget. If you want to use @widget
* again, you need to add a reference to it before removing it from
* a container, using g_object_ref(). If you dont want to use @widget
* again its usually more efficient to simply destroy it directly
* using gtk_widget_destroy() since this will remove it from the
* container and help break any circular reference count cycles.
* a container, using g_object_ref().
**/
void
gtk_container_remove (GtkContainer *container,
@@ -2945,3 +2942,24 @@ gtk_container_get_path_for_child (GtkContainer *container,
return path;
}
/**
* gtk_container_remove_callback:
* @child: child widget of @container. Does not have to be a direct child.
* @container: The #GtkContainer to remove @child from.
*
* Removes @child from @container. This function can be used as a callback
* passed to gtk_container_forall().
*
* Note that this does explicitly *not* check that @child's parent is @container,
* but @child must have been added to @container using gtk_container_add, otherwise
* this function will fail.
*/
void
gtk_container_remove_callback (GtkWidget *child,
GtkContainer *container)
{
g_return_if_fail (GTK_IS_WIDGET (child));
g_return_if_fail (GTK_IS_CONTAINER (container));
gtk_container_remove (container, child);
}

View File

@@ -242,6 +242,10 @@ GDK_AVAILABLE_IN_ALL
GtkWidgetPath * gtk_container_get_path_for_child (GtkContainer *container,
GtkWidget *child);
GDK_AVAILABLE_IN_3_92
void gtk_container_remove_callback (GtkWidget *child,
GtkContainer *container);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkContainer, g_object_unref)
G_END_DECLS

View File

@@ -120,7 +120,7 @@
*
* g_signal_connect_swapped (dialog,
* "response",
* G_CALLBACK (gtk_widget_destroy),
* G_CALLBACK (gtk_window_destroy),
* dialog);
*
* // Add the label, and show everything weve added
@@ -1178,7 +1178,7 @@ run_destroy_handler (GtkDialog *dialog, gpointer data)
* do_nothing_since_dialog_was_cancelled ();
* break;
* }
* gtk_widget_destroy (dialog);
* gtk_window_destory (GTK_WINDOW (dialog));
* ]|
*
* Note that even though the recursive main loop gives the effect of a

View File

@@ -1523,7 +1523,7 @@ gtk_drag_set_icon_widget_internal (GdkDragContext *context,
if (info == NULL)
{
if (destroy_on_release)
gtk_widget_destroy (widget);
g_object_unref (widget);
return;
}
@@ -1532,7 +1532,7 @@ gtk_drag_set_icon_widget_internal (GdkDragContext *context,
if (widget)
g_object_ref (widget);
info->icon_widget = widget;
info->icon_widget = g_object_ref (widget);
info->hot_x = hot_x;
info->hot_y = hot_y;
info->destroy_icon = destroy_on_release;
@@ -1604,7 +1604,7 @@ set_icon_helper (GdkDragContext *context,
GtkWidget *widget;
widget = gtk_image_new ();
gtk_widget_show (widget);
g_object_ref_sink (widget);
gtk_image_set_from_definition (GTK_IMAGE (widget), def, GTK_ICON_SIZE_DND);
@@ -1679,6 +1679,7 @@ gtk_drag_set_icon_surface (GdkDragContext *context,
cairo_surface_set_device_offset (surface, 0, 0);
widget = gtk_image_new_from_surface (surface);
g_object_ref_sink (widget);
gtk_drag_set_icon_widget_internal (context, widget, (int)hot_x, (int)hot_y, TRUE);
}
@@ -2015,7 +2016,7 @@ gtk_drag_remove_icon (GtkDragSourceInfo *info)
gtk_widget_set_opacity (widget, 1.0);
if (info->destroy_icon)
gtk_widget_destroy (widget);
g_object_unref (widget);
else
gtk_container_remove (GTK_CONTAINER (info->icon_window), widget);
@@ -2027,7 +2028,7 @@ static void
gtk_drag_source_info_free (GtkDragSourceInfo *info)
{
gtk_drag_remove_icon (info);
gtk_widget_destroy (info->icon_window);
gtk_window_destroy (GTK_WINDOW (info->icon_window));
g_free (info);
}

View File

@@ -170,13 +170,13 @@ add_recent_item (GtkEmojiChooser *chooser,
if (modifier == modifier2 && g_variant_equal (item, item2))
{
gtk_widget_destroy (GTK_WIDGET (l->data));
gtk_container_remove (GTK_CONTAINER (chooser->recent.box), GTK_WIDGET (l->data));
i--;
continue;
}
if (i >= MAX_RECENT)
{
gtk_widget_destroy (GTK_WIDGET (l->data));
gtk_container_remove (GTK_CONTAINER (chooser->recent.box), GTK_WIDGET (l->data));
continue;
}

View File

@@ -2691,10 +2691,10 @@ gtk_entry_finalize (GObject *object)
g_source_remove (priv->blink_timeout);
if (priv->selection_bubble)
gtk_widget_destroy (priv->selection_bubble);
g_object_unref (G_OBJECT (priv->selection_bubble));
if (priv->magnifier_popover)
gtk_widget_destroy (priv->magnifier_popover);
g_object_unref (G_OBJECT (priv->magnifier_popover));
if (priv->text_handle)
g_object_unref (priv->text_handle);
@@ -3012,7 +3012,7 @@ gtk_entry_unrealize (GtkWidget *widget)
if (priv->popup_menu)
{
gtk_widget_destroy (priv->popup_menu);
g_object_unref (G_OBJECT (priv->popup_menu));
priv->popup_menu = NULL;
}
@@ -8498,7 +8498,7 @@ popup_targets_received (GtkClipboard *clipboard,
clipboard_contains_text = gtk_selection_data_targets_include_text (data);
if (info_entry_priv->popup_menu)
gtk_widget_destroy (info_entry_priv->popup_menu);
g_object_unref (G_OBJECT (info_entry_priv->popup_menu));
info_entry_priv->popup_menu = menu = gtk_menu_new ();
gtk_style_context_add_class (gtk_widget_get_style_context (menu),
@@ -8691,7 +8691,7 @@ bubble_targets_received (GtkClipboard *clipboard,
}
if (priv->selection_bubble)
gtk_widget_destroy (priv->selection_bubble);
g_object_unref (G_OBJECT (priv->selection_bubble));
priv->selection_bubble = gtk_popover_new (GTK_WIDGET (entry));
gtk_style_context_add_class (gtk_widget_get_style_context (priv->selection_bubble),

View File

@@ -790,7 +790,7 @@ gtk_entry_completion_dispose (GObject *object)
if (priv->tree_view)
{
gtk_widget_destroy (priv->tree_view);
gtk_container_remove (GTK_CONTAINER (priv->scrolled_window), priv->tree_view);
priv->tree_view = NULL;
}
@@ -811,7 +811,7 @@ gtk_entry_completion_dispose (GObject *object)
if (priv->popup_window)
{
gtk_widget_destroy (priv->popup_window);
gtk_window_destroy (GTK_WINDOW (priv->popup_window));
priv->popup_window = NULL;
}

View File

@@ -354,7 +354,7 @@ gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
* if (gtk_dialog_run (chooser) == GTK_RESPONSE_ACCEPT)
* save_to_file (gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
*
* gtk_widget_destroy (chooser);
* gtk_window_destroy (GTK_WINDOW (chooser));
* ]|
*
* Returns: a #GtkFileChooserConfirmation value that indicates which

Some files were not shown because too many files have changed in this diff Show More