[nautilus] view: refactor supports_zooming into a property



commit 621106fd68a9e2d86f5e62876fd3e2844c2d85ac
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Feb 14 14:09:35 2011 -0500

    view: refactor supports_zooming into a property

 src/nautilus-desktop-icon-view.c |   12 +-----------
 src/nautilus-view.c              |   26 ++++++++++++++------------
 src/nautilus-view.h              |    7 -------
 3 files changed, 15 insertions(+), 30 deletions(-)
---
diff --git a/src/nautilus-desktop-icon-view.c b/src/nautilus-desktop-icon-view.c
index 1bf6c42..26f0a0f 100644
--- a/src/nautilus-desktop-icon-view.c
+++ b/src/nautilus-desktop-icon-view.c
@@ -87,7 +87,6 @@ static gboolean real_supports_keep_aligned                        (NautilusIconV
 static gboolean real_supports_labels_beside_icons                 (NautilusIconView             *view);
 static void     real_merge_menus                                  (NautilusView        *view);
 static void     real_update_menus                                 (NautilusView        *view);
-static gboolean real_supports_zooming                             (NautilusView        *view);
 static void     nautilus_desktop_icon_view_update_icon_container_fonts  (NautilusDesktopIconView      *view);
 static void     font_changed_callback                             (gpointer                callback_data);
 
@@ -324,7 +323,6 @@ nautilus_desktop_icon_view_class_init (NautilusDesktopIconViewClass *class)
 	vclass->begin_loading = real_begin_loading;
 	vclass->merge_menus = real_merge_menus;
 	vclass->update_menus = real_update_menus;
-	vclass->supports_zooming = real_supports_zooming;
 	vclass->get_view_id = real_get_id;
 
 	iclass->supports_auto_layout = real_supports_auto_layout;
@@ -843,15 +841,6 @@ real_supports_labels_beside_icons (NautilusIconView *view)
 	return FALSE;
 }
 
-static gboolean
-real_supports_zooming (NautilusView *view)
-{
-	/* Can't zoom on the desktop, because doing so would cause all
-	 * sorts of complications involving the fixed-size window.
-	 */
-	return FALSE;
-}
-
 static NautilusView *
 nautilus_desktop_icon_view_create (NautilusWindowSlot *slot)
 {
@@ -860,6 +849,7 @@ nautilus_desktop_icon_view_create (NautilusWindowSlot *slot)
 	view = g_object_new (NAUTILUS_TYPE_DESKTOP_ICON_VIEW,
 			     "window-slot", slot,
 			     "show-floating-bar", FALSE,
+			     "supports-zooming", FALSE,
 			     NULL);
 	return NAUTILUS_VIEW (view);
 }
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index 07a90e8..d47da57 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -146,6 +146,7 @@ enum {
 enum {
 	PROP_WINDOW_SLOT = 1,
 	PROP_SHOW_FLOATING_BAR,
+	PROP_SUPPORTS_ZOOMING,
 	NUM_PROPERTIES
 };
 
@@ -170,7 +171,9 @@ struct NautilusViewDetails
 
 	GtkWidget *overlay;
 	GtkWidget *floating_bar;
+
 	gboolean show_floating_bar;
+	gboolean supports_zooming;
 
 	GList *scripts_directory_list;
 	GtkActionGroup *scripts_action_group;
@@ -649,9 +652,7 @@ nautilus_view_supports_zooming (NautilusView *view)
 {
 	g_return_val_if_fail (NAUTILUS_IS_VIEW (view), FALSE);
 
-	return EEL_CALL_METHOD_WITH_RETURN_VALUE
-		(NAUTILUS_VIEW_CLASS, view,
-		 supports_zooming, (view));
+	return view->details->supports_zooming;
 }
 
 /**
@@ -9414,14 +9415,6 @@ nautilus_view_should_show_file (NautilusView *view, NautilusFile *file)
 }
 
 static gboolean
-real_supports_zooming (NautilusView *view)
-{
-	g_return_val_if_fail (NAUTILUS_IS_VIEW (view), FALSE);
-
-	return TRUE;
-}
-
-static gboolean
 real_using_manual_layout (NautilusView *view)
 {
 	g_return_val_if_fail (NAUTILUS_IS_VIEW (view), FALSE);
@@ -9634,6 +9627,9 @@ nautilus_view_set_property (GObject         *object,
 	case PROP_SHOW_FLOATING_BAR:
 		directory_view->details->show_floating_bar = g_value_get_boolean (value);
 		break;
+	case PROP_SUPPORTS_ZOOMING:
+		directory_view->details->supports_zooming = g_value_get_boolean (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -9850,7 +9846,6 @@ nautilus_view_class_init (NautilusViewClass *klass)
 	klass->load_error = real_load_error;
 	klass->can_rename_file = can_rename_file;
 	klass->start_renaming_file = start_renaming_file;
-	klass->supports_zooming = real_supports_zooming;
 	klass->using_manual_layout = real_using_manual_layout;
         klass->merge_menus = real_merge_menus;
         klass->unmerge_menus = real_unmerge_menus;
@@ -9893,6 +9888,13 @@ nautilus_view_class_init (NautilusViewClass *klass)
 				      TRUE,
 				      G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY |
 				      G_PARAM_STATIC_STRINGS);
+	properties[PROP_SUPPORTS_ZOOMING] =
+		g_param_spec_boolean ("supports-zooming",
+				      "Supports zooming",
+				      "Whether the view supports zooming",
+				      TRUE,
+				      G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY |
+				      G_PARAM_STATIC_STRINGS);
 
 	g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
 
diff --git a/src/nautilus-view.h b/src/nautilus-view.h
index 361a893..b6689f2 100644
--- a/src/nautilus-view.h
+++ b/src/nautilus-view.h
@@ -232,13 +232,6 @@ struct NautilusViewClass {
 						NautilusFile    *a,
 						NautilusFile    *b);
 
-	/* supports_zooming is a function pointer that subclasses may
-	 * override to control whether or not the zooming control and
-	 * menu items should be enabled. The default implementation
-	 * returns TRUE.
-	 */
-	gboolean (* supports_zooming)		(NautilusView *view);
-
 	/* using_manual_layout is a function pointer that subclasses may
 	 * override to control whether or not items can be freely positioned
 	 * on the user-visible area.



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