Add a gtk_window_close function

This is useful when adding close buttons in custom titlebars.
This commit is contained in:
Matthias Clasen 2013-06-28 22:19:15 -04:00
parent 860197a7d2
commit c73b48f28a
3 changed files with 23 additions and 5 deletions

View File

@ -5560,6 +5560,7 @@ gtk_window_get_default_widget
gtk_window_set_default gtk_window_set_default
gtk_window_present gtk_window_present
gtk_window_present_with_time gtk_window_present_with_time
gtk_window_close
gtk_window_iconify gtk_window_iconify
gtk_window_deiconify gtk_window_deiconify
gtk_window_stick gtk_window_stick

View File

@ -1235,7 +1235,7 @@ gtk_window_title_max_clicked (GtkWidget *widget, gpointer data)
static gboolean static gboolean
send_delete_event (gpointer data) send_delete_event (gpointer data)
{ {
GtkWidget *window = GTK_WIDGET (data); GtkWidget *window = data;
GdkEvent *event; GdkEvent *event;
event = gdk_event_new (GDK_DELETE); event = gdk_event_new (GDK_DELETE);
@ -1249,10 +1249,25 @@ send_delete_event (gpointer data)
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
static void /**
gtk_window_title_close_clicked (GtkWidget *button, gpointer data) * gtk_window_close:
* @window: a #GtkWindow
*
* Requests that the window is closed, similar to what happens
* when a window manager close button is clicked.
*
* This function can be used with close buttons in custom
* titlebars.
*
* Since: 3.10
*/
void
gtk_window_close (GtkWindow *window)
{ {
gdk_threads_add_idle (send_delete_event, data); if (!gtk_widget_get_realized (GTK_WIDGET (window)))
return;
gdk_threads_add_idle (send_delete_event, window);
} }
static void static void
@ -5157,7 +5172,7 @@ update_window_buttons (GtkWindow *window)
gtk_widget_set_can_focus (button, FALSE); gtk_widget_set_can_focus (button, FALSE);
gtk_widget_show_all (button); gtk_widget_show_all (button);
g_signal_connect (button, "clicked", g_signal_connect (button, "clicked",
G_CALLBACK (gtk_window_title_close_clicked), window); G_CALLBACK (gtk_window_close), window);
priv->title_close_button = button; priv->title_close_button = button;
} }

View File

@ -348,6 +348,8 @@ GDK_AVAILABLE_IN_ALL
void gtk_window_fullscreen (GtkWindow *window); void gtk_window_fullscreen (GtkWindow *window);
GDK_AVAILABLE_IN_ALL GDK_AVAILABLE_IN_ALL
void gtk_window_unfullscreen (GtkWindow *window); void gtk_window_unfullscreen (GtkWindow *window);
GDK_AVAILABLE_IN_3_10
void gtk_window_close (GtkWindow *window);
GDK_AVAILABLE_IN_ALL GDK_AVAILABLE_IN_ALL
void gtk_window_set_keep_above (GtkWindow *window, gboolean setting); void gtk_window_set_keep_above (GtkWindow *window, gboolean setting);
GDK_AVAILABLE_IN_ALL GDK_AVAILABLE_IN_ALL