From 4d677afdd7a146e313ee65d870d72599f2ead45e Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Wed, 17 Jul 2002 04:36:13 +0000 Subject: [PATCH] Bug 114627 -- ESC should dismiss default plugin dialog. Patch by Andre Dahlqvist , r=serge, sr=blizzard, a=asa --- .../plugin/samples/default/unix/nullplugin.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/plugin/samples/default/unix/nullplugin.c b/modules/plugin/samples/default/unix/nullplugin.c index 9f3689e21f0e..37e4f071338d 100644 --- a/modules/plugin/samples/default/unix/nullplugin.c +++ b/modules/plugin/samples/default/unix/nullplugin.c @@ -35,6 +35,7 @@ #include #include #include +#include /* Xlib/Xt stuff */ #include @@ -120,6 +121,20 @@ DialogCancelClicked (GtkButton *button, gpointer data) destroyWidget((PluginInstance*) data); } +/* function that closes the dialog if ESC is pressed */ +static gboolean +DialogEscapePressed (GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + if (event->keyval == GDK_Escape) + { + gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event"); + gtk_object_destroy (GTK_OBJECT (widget)); + return TRUE; + } + + return FALSE; +} + /* a handy procedure to add a widget and pack it as well */ static GtkWidget * AddWidget (GtkWidget *widget, GtkWidget *packingbox) @@ -265,6 +280,9 @@ makeWidget(PluginInstance *This) GTK_DIALOG(dialogWindow)->action_area); gtk_object_set_data(GTK_OBJECT(okButton), DIALOGID, dialogWindow); + GTK_WIDGET_SET_FLAGS (okButton, GTK_CAN_DEFAULT); + gtk_widget_grab_default(okButton); + cancelButton= AddWidget(gtk_button_new_with_label (CANCEL_BUTTON), GTK_DIALOG(dialogWindow)->action_area); @@ -274,6 +292,9 @@ makeWidget(PluginInstance *This) gtk_signal_connect (GTK_OBJECT(cancelButton), "clicked", GTK_SIGNAL_FUNC(DialogCancelClicked), This); + gtk_signal_connect(GTK_OBJECT(dialogWindow), "key_press_event", + GTK_SIGNAL_FUNC (DialogEscapePressed), NULL); + /* hookup to when the dialog is destroyed */ gtk_signal_connect(GTK_OBJECT(dialogWindow), "destroy", GTK_SIGNAL_FUNC(onDestroyWidget), This);