[nautilus] Turn nautilus_window_close() into a virtual method.
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] Turn nautilus_window_close() into a virtual method.
- Date: Mon, 25 Jul 2011 10:34:37 +0000 (UTC)
commit 3caf41765453c3c4cf9a73aae87b185d099598f9
Author: Antoine Jacoutot <ajacoutot openbsd org>
Date: Mon Jun 20 18:34:47 2011 +0200
Turn nautilus_window_close() into a virtual method.
nautilus_window_close() is now a virtual method that will behaves
according to NautilusWindowClass: it won't do anything if the window is
a NautilusDesktopWindow (i.e. it won't close it) which would prevent
desktop icons from disappearing.
nautilus_application_close_all_windows() will now skip hiding windows
but close them right away.
https://bugzilla.gnome.org/show_bug.cgi?id=652724
src/nautilus-application.c | 8 --------
src/nautilus-desktop-window.c | 8 ++++++++
src/nautilus-window.c | 17 ++++++++++++-----
src/nautilus-window.h | 1 +
4 files changed, 21 insertions(+), 13 deletions(-)
---
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 5ba95cf..7e59ce3 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -448,14 +448,6 @@ nautilus_application_close_all_windows (NautilusApplication *self)
GList *l;
list_copy = g_list_copy (gtk_application_get_windows (GTK_APPLICATION (self)));
- /* First hide all window to get the feeling of quick response */
- for (l = list_copy; l != NULL; l = l->next) {
- NautilusWindow *window;
-
- window = NAUTILUS_WINDOW (l->data);
- gtk_widget_hide (GTK_WIDGET (window));
- }
-
for (l = list_copy; l != NULL; l = l->next) {
NautilusWindow *window;
diff --git a/src/nautilus-desktop-window.c b/src/nautilus-desktop-window.c
index 6e5778a..5d4281f 100644
--- a/src/nautilus-desktop-window.c
+++ b/src/nautilus-desktop-window.c
@@ -282,6 +282,13 @@ real_sync_title (NautilusWindow *window,
}
static void
+real_window_close (NautilusWindow *window)
+{
+ /* stub, does nothing */
+ return;
+}
+
+static void
nautilus_desktop_window_class_init (NautilusDesktopWindowClass *klass)
{
GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass);
@@ -298,6 +305,7 @@ nautilus_desktop_window_class_init (NautilusDesktopWindowClass *klass)
nclass->window_type = NAUTILUS_WINDOW_DESKTOP;
nclass->sync_title = real_sync_title;
nclass->get_icon = real_get_icon;
+ nclass->close = real_window_close;
g_type_class_add_private (klass, sizeof (NautilusDesktopWindowDetails));
}
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index afa8f31..09a3f85 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -859,11 +859,7 @@ nautilus_window_save_geometry (NautilusWindow *window)
void
nautilus_window_close (NautilusWindow *window)
{
- g_return_if_fail (NAUTILUS_IS_WINDOW (window));
-
- nautilus_window_save_geometry (window);
-
- gtk_widget_destroy (GTK_WIDGET (window));
+ NAUTILUS_WINDOW_CLASS (G_OBJECT_GET_CLASS (window))->close (window);
}
NautilusWindowSlot *
@@ -2017,6 +2013,16 @@ real_get_icon (NautilusWindow *window,
}
static void
+real_window_close (NautilusWindow *window)
+{
+ g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+ nautilus_window_save_geometry (window);
+
+ gtk_widget_destroy (GTK_WIDGET (window));
+}
+
+static void
nautilus_window_class_init (NautilusWindowClass *class)
{
GtkBindingSet *binding_set;
@@ -2040,6 +2046,7 @@ nautilus_window_class_init (NautilusWindowClass *class)
class->window_type = NAUTILUS_WINDOW_NAVIGATION;
class->bookmarks_placeholder = MENU_PATH_BOOKMARKS_PLACEHOLDER;
class->get_icon = real_get_icon;
+ class->close = real_window_close;
properties[PROP_DISABLE_CHROME] =
g_param_spec_boolean ("disable-chrome",
diff --git a/src/nautilus-window.h b/src/nautilus-window.h
index 3d84e9c..ba43138 100644
--- a/src/nautilus-window.h
+++ b/src/nautilus-window.h
@@ -92,6 +92,7 @@ typedef struct {
NautilusWindowSlot *slot);
void (* prompt_for_location) (NautilusWindow *window, const char *initial);
+ void (* close) (NautilusWindow *window);
/* Signals used only for keybindings */
gboolean (* go_up) (NautilusWindow *window,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]