diff --git a/ChangeLog b/ChangeLog index 2ea684368296d10fc12dd81ba06b8331916d3c6c..bc37428cddd8a4360657cbd0104a7cf0a2bd41a7 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 962e2a20964e110e21204549a50fa650e83dd0c4..1e334bd6937dcaf538601f393684e7dd112b6125 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 f2440b7d401b9cdeb524b8fa0a3f291043195e8a..20c1c0e76931ad72fdbb308798ba909d9cdf88ab 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;