[gnome-panel] libgnome-panel: add close key binding to GpInitialSetupDialog
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel] libgnome-panel: add close key binding to GpInitialSetupDialog
- Date: Wed, 15 Apr 2020 22:11:38 +0000 (UTC)
commit c1f638919b5c43180ec9b67ea02e740b73c40211
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Wed Apr 15 23:33:37 2020 +0300
libgnome-panel: add close key binding to GpInitialSetupDialog
libgnome-panel/gp-initial-setup-dialog.c | 41 ++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
---
diff --git a/libgnome-panel/gp-initial-setup-dialog.c b/libgnome-panel/gp-initial-setup-dialog.c
index a7c93d1fd..7cbb01851 100644
--- a/libgnome-panel/gp-initial-setup-dialog.c
+++ b/libgnome-panel/gp-initial-setup-dialog.c
@@ -37,6 +37,15 @@ struct _GpInitialSetupDialog
GHashTable *settings;
};
+enum
+{
+ CLOSE,
+
+ LAST_SIGNAL
+};
+
+static guint dialog_signals[LAST_SIGNAL] = { 0 };
+
G_DEFINE_TYPE (GpInitialSetupDialog, gp_initital_setup_dialog, GTK_TYPE_WINDOW)
static void
@@ -57,6 +66,15 @@ done_clicked_cb (GtkButton *button,
gtk_widget_destroy (GTK_WIDGET (dialog));
}
+static void
+close_cb (GpInitialSetupDialog *self,
+ gpointer user_data)
+{
+ g_assert (self->setup_callback != NULL);
+ self->setup_callback (self, TRUE, self->setup_user_data);
+ gtk_widget_destroy (GTK_WIDGET (self));
+}
+
static void
gp_initital_setup_dialog_finalize (GObject *object)
{
@@ -99,11 +117,27 @@ gp_initital_setup_dialog_delete_event (GtkWidget *widget,
return FALSE;
}
+static void
+install_signals (void)
+{
+ dialog_signals[CLOSE] =
+ g_signal_new ("close",
+ GP_TYPE_INITIAL_SETUP_DIALOG,
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 0);
+}
+
static void
gp_initital_setup_dialog_class_init (GpInitialSetupDialogClass *dialog_class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
+ GtkBindingSet *binding_set;
object_class = G_OBJECT_CLASS (dialog_class);
widget_class = GTK_WIDGET_CLASS (dialog_class);
@@ -111,6 +145,11 @@ gp_initital_setup_dialog_class_init (GpInitialSetupDialogClass *dialog_class)
object_class->finalize = gp_initital_setup_dialog_finalize;
widget_class->delete_event = gp_initital_setup_dialog_delete_event;
+
+ install_signals ();
+
+ binding_set = gtk_binding_set_by_class (widget_class);
+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "close", 0);
}
static void
@@ -143,6 +182,8 @@ gp_initital_setup_dialog_init (GpInitialSetupDialog *dialog)
g_signal_connect (cancel, "clicked", G_CALLBACK (cancel_clicked_cb), dialog);
g_signal_connect (done, "clicked", G_CALLBACK (done_clicked_cb), dialog);
+
+ g_signal_connect (dialog, "close", G_CALLBACK (close_cb), NULL);
}
GpInitialSetupDialog *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]