From f1320c9c5b40c62ba10a4589d011aa63278d9e9b Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 14 Feb 2008 10:26:23 +0000 Subject: [PATCH] Close properties dialog on escape (#515620) Patch from Cosimo Cecchi 2008-02-14 Alexander Larsson * src/file-manager/fm-properties-window.[ch]: Close properties dialog on escape (#515620) Patch from Cosimo Cecchi svn path=/trunk/; revision=13749 --- ChangeLog | 6 ++++ src/file-manager/fm-properties-window.c | 40 +++++++++++++++++++++++++ src/file-manager/fm-properties-window.h | 3 ++ 3 files changed, 49 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2ea684368..bc37428cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-14 Alexander Larsson + + * src/file-manager/fm-properties-window.[ch]: + Close properties dialog on escape (#515620) + Patch from Cosimo Cecchi + 2008-02-14 Alexander Larsson * libnautilus-private/nautilus-file-operations.c: diff --git a/src/file-manager/fm-properties-window.c b/src/file-manager/fm-properties-window.c index 962e2a209..1e334bd69 100644 --- a/src/file-manager/fm-properties-window.c +++ b/src/file-manager/fm-properties-window.c @@ -191,6 +191,13 @@ enum { COLUMN_COUNT }; +enum { + CLOSE, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL]; + typedef struct { GList *original_files; GList *target_files; @@ -5397,11 +5404,44 @@ select_image_button_callback (GtkWidget *widget, gtk_widget_hide (dialog); } +static void +fm_properties_window_close (FMPropertiesWindow *pwindow) +{ + /* Synthesize delete_event to close dialog. */ + + GtkWidget *widget = GTK_WIDGET (pwindow); + GdkEvent *event; + + event = gdk_event_new (GDK_DELETE); + + event->any.window = g_object_ref (widget->window); + event->any.send_event = TRUE; + + gtk_main_do_event (event); + gdk_event_free (event); +} + static void fm_properties_window_class_init (FMPropertiesWindowClass *class) { + GtkBindingSet *binding_set; + G_OBJECT_CLASS (class)->finalize = real_finalize; GTK_OBJECT_CLASS (class)->destroy = real_destroy; + class->close = fm_properties_window_close; + + signals[CLOSE] = + g_signal_new ("close", + G_OBJECT_CLASS_TYPE (class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (FMPropertiesWindowClass, close), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + binding_set = gtk_binding_set_by_class (class); + gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0, + "close", 0); } static void diff --git a/src/file-manager/fm-properties-window.h b/src/file-manager/fm-properties-window.h index f2440b7d4..20c1c0e76 100644 --- a/src/file-manager/fm-properties-window.h +++ b/src/file-manager/fm-properties-window.h @@ -51,6 +51,9 @@ struct FMPropertiesWindow { struct FMPropertiesWindowClass { GtkWindowClass parent_class; + + /* Keybinding signals */ + void (* close) (FMPropertiesWindow *window); }; typedef struct FMPropertiesWindowClass FMPropertiesWindowClass; -- GitLab