From e7fbfdd067cd3f811fd657ce3e72f2f73518e987 Mon Sep 17 00:00:00 2001 From: Hiroyuki Ito Date: Mon, 11 Sep 2017 12:02:13 +0000 Subject: [PATCH] =?UTF-8?q?ColorButton:=20Don=E2=80=99t=20destroy=20dialog?= =?UTF-8?q?=20@=20::delete-event?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without specifically connecting ::delete-event to something, the dialog will be destroyed when it is closed, for example by pressing Esc. This meant that when dismissing it this way, unlike by pressing Cancel, any custom palette would be lost when the dialog was next opened, and so on. Resolve this by making ::delete-event just do GTK_RESPONSE_CANCEL, so closing the dialog has the same effect as clicking its Cancel button. https://bugzilla.gnome.org/show_bug.cgi?id=787444 --- gtk/gtkcolorbutton.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c index b77ea28496..a990ad5c63 100644 --- a/gtk/gtkcolorbutton.c +++ b/gtk/gtkcolorbutton.c @@ -494,6 +494,16 @@ gtk_color_button_new_with_rgba (const GdkRGBA *rgba) return g_object_new (GTK_TYPE_COLOR_BUTTON, "rgba", rgba, NULL); } +static gboolean +dialog_delete_event (GtkWidget *dialog, + GdkEvent *event, + gpointer user_data) +{ + g_signal_emit_by_name (dialog, "response", GTK_RESPONSE_CANCEL); + + return TRUE; +} + static gboolean dialog_destroy (GtkWidget *widget, gpointer data) @@ -561,6 +571,8 @@ ensure_dialog (GtkColorButton *button) G_CALLBACK (dialog_response), button); g_signal_connect (dialog, "destroy", G_CALLBACK (dialog_destroy), button); + g_signal_connect (dialog, "delete-event", + G_CALLBACK (dialog_delete_event), button); }