[nautilus] Do not use "if (spatial) ..." in window superclass



commit 32327339b335e71f661f5f51c6f66ddb95cbd099
Author: Paolo Borelli <pborelli gnome org>
Date:   Sat Apr 17 16:57:25 2010 +0200

    Do not use "if (spatial) ..." in window superclass
    
    Delegate behavior specific to the window type to an appopriate subclass
    method.

 src/nautilus-application.c       |    8 ++++----
 src/nautilus-navigation-window.c |   17 ++++++++++++++---
 src/nautilus-spatial-window.c    |   15 ++++++++++++++-
 src/nautilus-window-private.h    |   10 +++++-----
 src/nautilus-window.c            |   11 +++--------
 src/nautilus-window.h            |    1 +
 6 files changed, 41 insertions(+), 21 deletions(-)
---
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 26b2cf9..81beb48 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -1413,8 +1413,8 @@ nautilus_application_create_navigation_window (NautilusApplication *application,
 		eel_gtk_window_set_initial_geometry_from_string 
 			(GTK_WINDOW (window), 
 			 geometry_string,
-			 NAUTILUS_WINDOW_MIN_WIDTH, 
-			 NAUTILUS_WINDOW_MIN_HEIGHT,
+			 NAUTILUS_NAVIGATION_WINDOW_MIN_WIDTH,
+			 NAUTILUS_NAVIGATION_WINDOW_MIN_HEIGHT,
 			 another_navigation_window_already_showing (window));
 	}
 	g_free (geometry_string);
@@ -1971,8 +1971,8 @@ nautilus_application_load_session (NautilusApplication *application)
 						eel_gtk_window_set_initial_geometry_from_string 
 							(GTK_WINDOW (window), 
 							 geometry,
-							 NAUTILUS_WINDOW_MIN_WIDTH, 
-							 NAUTILUS_WINDOW_MIN_HEIGHT,
+							 NAUTILUS_NAVIGATION_WINDOW_MIN_WIDTH,
+							 NAUTILUS_NAVIGATION_WINDOW_MIN_HEIGHT,
 							 FALSE);
 					}
 					xmlFree (geometry);
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index 9ad8213..7233d10 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -1113,15 +1113,25 @@ nautilus_navigation_window_save_geometry (NautilusNavigationWindow *window)
 	}
 }
 
-
-
 static void
 real_window_close (NautilusWindow *window)
 {
 	nautilus_navigation_window_save_geometry (NAUTILUS_NAVIGATION_WINDOW (window));
 }
 
-static void 
+static void
+real_get_min_size (NautilusWindow *window,
+		   guint *min_width, guint *min_height)
+{
+	if (min_width) {
+		*min_width = NAUTILUS_NAVIGATION_WINDOW_MIN_WIDTH;
+	}
+	if (min_height) {
+		*min_height = NAUTILUS_NAVIGATION_WINDOW_MIN_HEIGHT;
+	}
+}
+
+static void
 real_get_default_size (NautilusWindow *window,
 		       guint *default_width, guint *default_height)
 {
@@ -1187,6 +1197,7 @@ nautilus_navigation_window_class_init (NautilusNavigationWindowClass *class)
 	NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location;
 	NAUTILUS_WINDOW_CLASS (class)->sync_title = real_sync_title;
 	NAUTILUS_WINDOW_CLASS (class)->get_icon = real_get_icon;
+	NAUTILUS_WINDOW_CLASS (class)->get_min_size = real_get_min_size;
 	NAUTILUS_WINDOW_CLASS (class)->get_default_size = real_get_default_size;
 	NAUTILUS_WINDOW_CLASS (class)->close = real_window_close;
 
diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c
index 169fe87..d68c6ac 100644
--- a/src/nautilus-spatial-window.c
+++ b/src/nautilus-spatial-window.c
@@ -411,7 +411,19 @@ real_sync_title (NautilusWindow *window,
 	sync_window_title (window);
 }
 
-static void 
+static void
+real_get_min_size (NautilusWindow *window,
+		   guint *min_width, guint *min_height)
+{
+	if (min_width) {
+		*min_width = NAUTILUS_SPATIAL_WINDOW_MIN_WIDTH;
+	}
+	if (min_height) {
+		*min_height = NAUTILUS_SPATIAL_WINDOW_MIN_HEIGHT;
+	}
+}
+
+static void
 real_get_default_size (NautilusWindow *window,
 		       guint *default_width, guint *default_height)
 {
@@ -1099,6 +1111,7 @@ nautilus_spatial_window_class_init (NautilusSpatialWindowClass *class)
 		real_get_icon;
 	NAUTILUS_WINDOW_CLASS (class)->sync_title = 
 		real_sync_title;
+	NAUTILUS_WINDOW_CLASS(class)->get_min_size = real_get_min_size;
 	NAUTILUS_WINDOW_CLASS(class)->get_default_size = real_get_default_size;
 
 	NAUTILUS_WINDOW_CLASS(class)->sync_allow_stop =
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index d99a13e..d9ed0e4 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -142,20 +142,20 @@ struct _NautilusNavigationWindowDetails {
 #define NAUTILUS_COMMAND_ZOOM_NORMAL			"/commands/Zoom Normal"
 
 /* window geometry */
-/* These are very small, and a Nautilus window at this tiny size is *almost*
+/* Min values are very small, and a Nautilus window at this tiny size is *almost*
  * completely unusable. However, if all the extra bits (sidebar, location bar, etc)
  * are turned off, you can see an icon or two at this size. See bug 5946.
  */
-#define NAUTILUS_WINDOW_MIN_WIDTH			200
-#define NAUTILUS_WINDOW_MIN_HEIGHT			200
 
 #define NAUTILUS_SPATIAL_WINDOW_MIN_WIDTH			100
 #define NAUTILUS_SPATIAL_WINDOW_MIN_HEIGHT			100
 #define NAUTILUS_SPATIAL_WINDOW_DEFAULT_WIDTH			500
 #define NAUTILUS_SPATIAL_WINDOW_DEFAULT_HEIGHT			300
 
-#define NAUTILUS_NAVIGATION_WINDOW_DEFAULT_WIDTH        800
-#define NAUTILUS_NAVIGATION_WINDOW_DEFAULT_HEIGHT       550
+#define NAUTILUS_NAVIGATION_WINDOW_MIN_WIDTH			200
+#define NAUTILUS_NAVIGATION_WINDOW_MIN_HEIGHT			200
+#define NAUTILUS_NAVIGATION_WINDOW_DEFAULT_WIDTH		800
+#define NAUTILUS_NAVIGATION_WINDOW_DEFAULT_HEIGHT		550
 
 typedef void (*NautilusBookmarkFailedCallback) (NautilusWindow *window,
                                                 NautilusBookmark *bookmark);
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 4563099..854fcf2 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -496,14 +496,9 @@ nautilus_window_set_initial_window_geometry (NautilusWindow *window)
 	max_width_for_screen = get_max_forced_width (screen);
 	max_height_for_screen = get_max_forced_height (screen);
 
-	if (NAUTILUS_IS_SPATIAL_WINDOW (window)) {
-		min_width = NAUTILUS_SPATIAL_WINDOW_MIN_WIDTH;
-		min_height = NAUTILUS_SPATIAL_WINDOW_MIN_HEIGHT;
-	} else {
-		min_width = NAUTILUS_WINDOW_MIN_WIDTH;
-		min_height = NAUTILUS_WINDOW_MIN_HEIGHT;
-	}
-		
+	EEL_CALL_METHOD (NAUTILUS_WINDOW_CLASS, window,
+			 get_min_size, (window, &min_width, &min_height));
+
 	gtk_widget_set_size_request (GTK_WIDGET (window), 
 				     MIN (min_width, 
 					  max_width_for_screen),
diff --git a/src/nautilus-window.h b/src/nautilus-window.h
index 2c9e3c1..e81fea7 100644
--- a/src/nautilus-window.h
+++ b/src/nautilus-window.h
@@ -99,6 +99,7 @@ typedef struct {
 	void   (* set_allow_up) (NautilusWindow *window, gboolean allow);
 	void   (* reload)              (NautilusWindow *window);
         void   (* prompt_for_location) (NautilusWindow *window, const char *initial);
+        void   (* get_min_size) (NautilusWindow *window, guint *default_width, guint *default_height);
         void   (* get_default_size) (NautilusWindow *window, guint *default_width, guint *default_height);
         void   (* close) (NautilusWindow *window);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]