[nautilus] Turn nautilus_window_close() into a virtual method.



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]