File nautilus-6014-network-servers-desktop-icon.diff of Package nautilus

2006-02-09  Federico Mena Quintero  <federico@ximian.com>

	* src/nautilus-places-sidebar.c (update_places): Add an item
	for "Network Servers".  Fixes
	https://bugzilla.novell.com/show_bug.cgi?id=149685

	* Merged changes from nautilus HEAD which add a Network Servers
	item to the Go menu.

2005-12-01  Federico Mena Quintero  <federico@ximian.com>

	* libnautilus-private/nautilus-global-preferences.h
	(NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE): New preference
	name.  This determines whether we show the "Network Servers" icon.

	* libnautilus-private/apps_nautilus_preferences.schemas.in: Add a
	schema for /apps/nautilus/desktop/network_icon_visible; the default is false.

	* libnautilus-private/nautilus-desktop-link.h
	(NautilusDesktopLinkType): Add a NAUTILUS_DESKTOP_LINK_NETWORK type.

	* libnautilus-private/nautilus-desktop-link.c
	(nautilus_desktop_link_new): Support NAUTILUS_DESKTOP_LINK_NETWORK.

	* libnautilus-private/nautilus-desktop-link-monitor.c
	(NautilusDesktopLinkMonitorDetails): Added a network_link field.
	(nautilus_desktop_link_monitor_delete_link): Don't delete
	NAUTILUS_DESKTOP_LINK_NETWORK links.
	(update_link_visibility): New helper function.
	(desktop_home_visible_changed): Use update_link_visibility(), to
	avoid duplicated code.
	(desktop_computer_visible_changed): Likewise.
	(desktop_trash_visible_changed): Likewise.
	(desktop_network_visible_changed): New function.
	(create_link_and_add_preference): New helper function.
	(nautilus_desktop_link_monitor_init): Use
	create_link_and_add_preference() to avoid duplicated code.  Also,
	create the network_link.
	(desktop_link_monitor_finalize): Unref the network_link.
	(remove_link_and_preference): New helper function.
	(desktop_link_monitor_finalize): Use remove_link_and_preference()
	to avoid duplicated code.  Also, free the network_link.

	* src/file-manager/fm-icon-container.c (SortCategory): Add a
	SORT_NETWORK_LINK category right before SORT_MOUNT_LINK, so that
	the "Network Servers" icon appears before mounts.
	(get_sort_category): Use SORT_NETWORK_LINK as the category for
	NAUTILUS_DESKTOP_LINK_NETWORK.

Index: libnautilus-private/apps_nautilus_preferences.schemas.in
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/apps_nautilus_preferences.schemas.in,v
retrieving revision 1.27
diff -u -p -r1.27 apps_nautilus_preferences.schemas.in
--- libnautilus-private/apps_nautilus_preferences.schemas.in	11 Jul 2005 10:12:46 -0000	1.27
+++ libnautilus-private/apps_nautilus_preferences.schemas.in	30 Nov 2005 19:23:43 -0000
@@ -810,6 +810,21 @@ most cases, this should be left alone. -
     </schema>
 
     <schema>
+      <key>/schemas/apps/nautilus/desktop/network_icon_visible</key>
+      <applyto>/apps/nautilus/desktop/network_icon_visible</applyto>
+      <owner>nautilus</owner>
+      <type>bool</type>
+      <default>false</default>
+      <locale name="C">
+      	<short>Network Servers icon visible on the desktop</short>
+	<long>
+	  If this is set to true, an icon linking to the Network Servers view
+	  will be put on the desktop.
+	</long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/nautilus/desktop/computer_icon_name</key>
       <applyto>/apps/nautilus/desktop/computer_icon_name</applyto>
       <owner>nautilus</owner>
Index: libnautilus-private/nautilus-desktop-link-monitor.c
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-desktop-link-monitor.c,v
retrieving revision 1.14
diff -u -p -r1.14 nautilus-desktop-link-monitor.c
--- libnautilus-private/nautilus-desktop-link-monitor.c	13 Jul 2005 12:46:56 -0000	1.14
+++ libnautilus-private/nautilus-desktop-link-monitor.c	30 Nov 2005 19:23:43 -0000
@@ -50,6 +50,7 @@ struct NautilusDesktopLinkMonitorDetails
 	NautilusDesktopLink *home_link;
 	NautilusDesktopLink *computer_link;
 	NautilusDesktopLink *trash_link;
+	NautilusDesktopLink *network_link;
 
 	gulong mount_id;
 	gulong unmount_id;
@@ -149,6 +150,7 @@ nautilus_desktop_link_monitor_delete_lin
 	case NAUTILUS_DESKTOP_LINK_HOME:
 	case NAUTILUS_DESKTOP_LINK_COMPUTER:
 	case NAUTILUS_DESKTOP_LINK_TRASH:
+	case NAUTILUS_DESKTOP_LINK_NETWORK:
 		/* just ignore. We don't allow you to delete these */
 		break;
 	default:
@@ -249,6 +251,23 @@ volume_unmounted_callback (GnomeVFSVolum
 	}
 }
 
+static void
+update_link_visibility (NautilusDesktopLinkMonitor *monitor,
+			NautilusDesktopLink       **link_ref,
+			NautilusDesktopLinkType     link_type,
+			const char                 *preference_key)
+{
+	if (eel_preferences_get_boolean (preference_key)) {
+		if (*link_ref == NULL) {
+			*link_ref = nautilus_desktop_link_new (link_type);
+		}
+	} else {
+		if (*link_ref != NULL) {
+			g_object_unref (*link_ref);
+			*link_ref = NULL;
+		}
+	}
+}
 
 static void
 desktop_home_visible_changed (gpointer callback_data)
@@ -257,16 +276,10 @@ desktop_home_visible_changed (gpointer c
 
 	monitor = NAUTILUS_DESKTOP_LINK_MONITOR (callback_data);
 
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE)) {
-		if (monitor->details->home_link == NULL) {
-			monitor->details->home_link = nautilus_desktop_link_new (NAUTILUS_DESKTOP_LINK_HOME);
-		}
-	} else {
-		if (monitor->details->home_link != NULL) {
-			g_object_unref (monitor->details->home_link);
-			monitor->details->home_link = NULL;
-		}
-	}
+	update_link_visibility (NAUTILUS_DESKTOP_LINK_MONITOR (monitor),
+				&monitor->details->home_link,
+				NAUTILUS_DESKTOP_LINK_HOME,
+				NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE);
 }
 
 static void
@@ -276,16 +289,10 @@ desktop_computer_visible_changed (gpoint
 
 	monitor = NAUTILUS_DESKTOP_LINK_MONITOR (callback_data);
 
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE)) {
-		if (monitor->details->computer_link == NULL) {
-			monitor->details->computer_link = nautilus_desktop_link_new (NAUTILUS_DESKTOP_LINK_COMPUTER);
-		}
-	} else {
-		if (monitor->details->computer_link != NULL) {
-			g_object_unref (monitor->details->computer_link);
-			monitor->details->computer_link = NULL;
-		}
-	}
+	update_link_visibility (NAUTILUS_DESKTOP_LINK_MONITOR (callback_data),
+				&monitor->details->computer_link,
+				NAUTILUS_DESKTOP_LINK_COMPUTER,
+				NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE);
 }
 
 static void
@@ -295,16 +302,23 @@ desktop_trash_visible_changed (gpointer 
 
 	monitor = NAUTILUS_DESKTOP_LINK_MONITOR (callback_data);
 
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE)) {
-		if (monitor->details->trash_link == NULL) {
-			monitor->details->trash_link = nautilus_desktop_link_new (NAUTILUS_DESKTOP_LINK_TRASH);
-		}
-	} else {
-		if (monitor->details->trash_link != NULL) {
-			g_object_unref (monitor->details->trash_link);
-			monitor->details->trash_link = NULL;
-		}
-	}
+	update_link_visibility (NAUTILUS_DESKTOP_LINK_MONITOR (callback_data),
+				&monitor->details->trash_link,
+				NAUTILUS_DESKTOP_LINK_TRASH,
+				NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE);
+}
+
+static void
+desktop_network_visible_changed (gpointer callback_data)
+{
+	NautilusDesktopLinkMonitor *monitor;
+
+	monitor = NAUTILUS_DESKTOP_LINK_MONITOR (callback_data);
+
+	update_link_visibility (NAUTILUS_DESKTOP_LINK_MONITOR (callback_data),
+				&monitor->details->network_link,
+				NAUTILUS_DESKTOP_LINK_NETWORK,
+				NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE);
 }
 
 static void
@@ -334,6 +348,20 @@ desktop_volumes_visible_changed (gpointe
 }
 
 static void
+create_link_and_add_preference (NautilusDesktopLink   **link_ref,
+				NautilusDesktopLinkType link_type,
+				const char             *preference_key,
+				EelPreferencesCallback  callback,
+				gpointer                callback_data)
+{
+	if (eel_preferences_get_boolean (preference_key)) {
+		*link_ref = nautilus_desktop_link_new (link_type);
+	}
+
+	eel_preferences_add_callback (preference_key, callback, callback_data);
+}
+	     
+static void
 nautilus_desktop_link_monitor_init (gpointer object, gpointer klass)
 {
 	NautilusDesktopLinkMonitor *monitor;
@@ -350,17 +378,33 @@ nautilus_desktop_link_monitor_init (gpoi
 	/* We keep around a ref to the desktop dir */
 	monitor->details->desktop_dir = nautilus_directory_get (EEL_DESKTOP_URI);
 
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE)) {
-		monitor->details->home_link = nautilus_desktop_link_new (NAUTILUS_DESKTOP_LINK_HOME);
-	}
-	
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE)) {
-		monitor->details->computer_link = nautilus_desktop_link_new (NAUTILUS_DESKTOP_LINK_COMPUTER);
-	}
+	/* Default links */
+
+	create_link_and_add_preference (&monitor->details->home_link,
+					NAUTILUS_DESKTOP_LINK_HOME,
+					NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE,
+					desktop_home_visible_changed,
+					monitor);
+
+	create_link_and_add_preference (&monitor->details->computer_link,
+					NAUTILUS_DESKTOP_LINK_COMPUTER,
+					NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE,
+					desktop_computer_visible_changed,
+					monitor);
 	
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE)) {
-		monitor->details->trash_link = nautilus_desktop_link_new (NAUTILUS_DESKTOP_LINK_TRASH);
-	}
+	create_link_and_add_preference (&monitor->details->trash_link,
+					NAUTILUS_DESKTOP_LINK_TRASH,
+					NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE,
+					desktop_trash_visible_changed,
+					monitor);
+
+	create_link_and_add_preference (&monitor->details->network_link,
+					NAUTILUS_DESKTOP_LINK_NETWORK,
+					NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE,
+					desktop_network_visible_changed,
+					monitor);
+
+	/* Volume links */
 
 	volume_monitor = gnome_vfs_get_volume_monitor ();
 	
@@ -372,15 +416,6 @@ nautilus_desktop_link_monitor_init (gpoi
 	}
 	g_list_free (volumes);
 
-	eel_preferences_add_callback (NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE,
-				      desktop_home_visible_changed,
-				      monitor);
-	eel_preferences_add_callback (NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE,
-				      desktop_computer_visible_changed,
-				      monitor);
-	eel_preferences_add_callback (NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE,
-				      desktop_trash_visible_changed,
-				      monitor);
 	eel_preferences_add_callback (NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE,
 				      desktop_volumes_visible_changed,
 				      monitor);
@@ -390,7 +425,21 @@ nautilus_desktop_link_monitor_init (gpoi
 	monitor->details->unmount_id = g_signal_connect_object (volume_monitor, "volume_unmounted",
 								G_CALLBACK (volume_unmounted_callback), monitor, 0);
 
-}	
+}
+
+static void
+remove_link_and_preference (NautilusDesktopLink   **link_ref,
+			    const char             *preference_key,
+			    EelPreferencesCallback  callback,
+			    gpointer                callback_data)
+{
+	if (*link_ref != NULL) {
+		g_object_unref (*link_ref);
+		*link_ref = NULL;
+	}
+
+	eel_preferences_remove_callback (preference_key, callback, callback_data);
+}
 
 static void
 desktop_link_monitor_finalize (GObject *object)
@@ -399,20 +448,29 @@ desktop_link_monitor_finalize (GObject *
 
 	monitor = NAUTILUS_DESKTOP_LINK_MONITOR (object);
 
-	if (monitor->details->home_link != NULL) {
-		g_object_unref (monitor->details->home_link);
-		monitor->details->home_link = NULL;
-	}
+	/* Default links */
 
-	if (monitor->details->computer_link != NULL) {
-		g_object_unref (monitor->details->computer_link);
-		monitor->details->computer_link = NULL;
-	}
+	remove_link_and_preference (&monitor->details->home_link,
+				    NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE,
+				    desktop_home_visible_changed,
+				    monitor);
+
+	remove_link_and_preference (&monitor->details->computer_link,
+				    NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE,
+				    desktop_computer_visible_changed,
+				    monitor);
+
+	remove_link_and_preference (&monitor->details->trash_link,
+				    NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE,
+				    desktop_trash_visible_changed,
+				    monitor);
+
+	remove_link_and_preference (&monitor->details->network_link,
+				    NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE,
+				    desktop_network_visible_changed,
+				    monitor);
 
-	if (monitor->details->trash_link != NULL) {
-		g_object_unref (monitor->details->trash_link);
-		monitor->details->trash_link = NULL;
-	}
+	/* Volumes */
 
 	g_list_foreach (monitor->details->volume_links, (GFunc)g_object_unref, NULL);
 	g_list_free (monitor->details->volume_links);
@@ -421,15 +479,6 @@ desktop_link_monitor_finalize (GObject *
 	nautilus_directory_unref (monitor->details->desktop_dir);
 	monitor->details->desktop_dir = NULL;
 
-	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE,
-					 desktop_home_visible_changed,
-					 monitor);
-	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_DESKTOP_COMPUTER_VISIBLE,
-					 desktop_computer_visible_changed,
-					 monitor);
-	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE,
-					 desktop_trash_visible_changed,
-					 monitor);
 	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE,
 					 desktop_volumes_visible_changed,
 					 monitor);
Index: libnautilus-private/nautilus-desktop-link.c
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-desktop-link.c,v
retrieving revision 1.11
diff -u -p -r1.11 nautilus-desktop-link.c
--- libnautilus-private/nautilus-desktop-link.c	27 Feb 2005 15:06:16 -0000	1.11
+++ libnautilus-private/nautilus-desktop-link.c	30 Nov 2005 19:23:43 -0000
@@ -174,6 +174,14 @@ nautilus_desktop_link_new (NautilusDeskt
 			g_signal_connect_object (nautilus_trash_monitor_get (), "trash_state_changed",
 						 G_CALLBACK (trash_state_changed_callback), link, 0);	
 		break;
+
+	case NAUTILUS_DESKTOP_LINK_NETWORK:
+		link->details->filename = g_strdup ("network");
+		link->details->display_name = g_strdup (_("Network Servers"));
+		link->details->activation_uri = g_strdup ("network:///");
+		link->details->icon = g_strdup ("gnome-fs-network");
+		break;
+
 	default:
 	case NAUTILUS_DESKTOP_LINK_VOLUME:
 		g_assert_not_reached();
@@ -379,7 +387,7 @@ desktop_link_finalize (GObject *object)
 						 trash_name_changed,
 						 link);
 	}
-	
+
 	if (link->details->type == NAUTILUS_DESKTOP_LINK_VOLUME) {
 		gnome_vfs_volume_unref (link->details->volume);
 	}
Index: libnautilus-private/nautilus-desktop-link.h
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-desktop-link.h,v
retrieving revision 1.3
diff -u -p -r1.3 nautilus-desktop-link.h
--- libnautilus-private/nautilus-desktop-link.h	6 Nov 2003 16:07:01 -0000	1.3
+++ libnautilus-private/nautilus-desktop-link.h	30 Nov 2005 19:23:43 -0000
@@ -54,7 +54,8 @@ typedef enum {
 	NAUTILUS_DESKTOP_LINK_HOME,
 	NAUTILUS_DESKTOP_LINK_COMPUTER,
 	NAUTILUS_DESKTOP_LINK_TRASH,
-	NAUTILUS_DESKTOP_LINK_VOLUME
+	NAUTILUS_DESKTOP_LINK_VOLUME,
+	NAUTILUS_DESKTOP_LINK_NETWORK
 } NautilusDesktopLinkType;
 
 GType   nautilus_desktop_link_get_type (void);
Index: libnautilus-private/nautilus-global-preferences.h
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-global-preferences.h,v
retrieving revision 1.130
diff -u -p -r1.130 nautilus-global-preferences.h
--- libnautilus-private/nautilus-global-preferences.h	11 Jul 2005 08:52:21 -0000	1.130
+++ libnautilus-private/nautilus-global-preferences.h	30 Nov 2005 19:23:43 -0000
@@ -182,6 +182,7 @@ typedef enum
 #define NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE         "desktop/trash_icon_visible"
 #define NAUTILUS_PREFERENCES_DESKTOP_TRASH_NAME            "desktop/trash_icon_name"
 #define NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE	   "desktop/volumes_visible"
+#define NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE       "desktop/network_icon_visible"
 
 void nautilus_global_preferences_init                      (void);
 char *nautilus_global_preferences_get_default_folder_viewer_preference_as_iid (void);
Index: src/file-manager/fm-icon-container.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-container.c,v
retrieving revision 1.16
diff -u -p -r1.16 fm-icon-container.c
--- src/file-manager/fm-icon-container.c	22 Feb 2005 10:41:46 -0000	1.16
+++ src/file-manager/fm-icon-container.c	1 Dec 2005 19:08:32 -0000
@@ -337,14 +337,17 @@ fm_icon_container_get_icon_text (Nautilu
 }
 
 /* Sort as follows:
+ *   0) computer link
  *   1) home link
- *   2) mount links
- *   3) other
- *   4) trash link
+ *   2) network link
+ *   3) mount links
+ *   4) other
+ *   5) trash link
  */
 typedef enum {
 	SORT_COMPUTER_LINK,
 	SORT_HOME_LINK,
+	SORT_NETWORK_LINK,
 	SORT_MOUNT_LINK,
 	SORT_OTHER,
 	SORT_TRASH_LINK
@@ -373,6 +376,9 @@ get_sort_category (NautilusFile *file)
 				break;
 			case NAUTILUS_DESKTOP_LINK_TRASH:
 				category = SORT_TRASH_LINK;
+				break;
+			case NAUTILUS_DESKTOP_LINK_NETWORK:
+				category = SORT_NETWORK_LINK;
 				break;
 			default:
 				category = SORT_OTHER;
Index: src/nautilus-main.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-main.c,v
retrieving revision 1.150
retrieving revision 1.151
diff -u -r1.150 -r1.151
--- src/nautilus-main.c	14 Nov 2005 16:00:25 -0000	1.150
+++ src/nautilus-main.c	15 Dec 2005 14:25:57 -0000	1.151
@@ -137,7 +137,7 @@
 	GtkIconSource *source;
 	GtkIconSet *set;
 	GtkIconFactory *factory;
-	const char *icons_to_register[] = {"gnome-fs-client", "gnome-fs-trash-empty", "gnome-dev-cdrom", "stock_new-template"};
+	const char *icons_to_register[] = {"gnome-fs-client", "gnome-fs-network", "gnome-fs-home", "gnome-fs-trash-empty", "gnome-dev-cdrom", "stock_new-template"};
 	struct { int pixel; int gtk; } sizes[] = {
 		{16, GTK_ICON_SIZE_MENU},
 		{18, GTK_ICON_SIZE_SMALL_TOOLBAR},
Index: src/nautilus-navigation-window-ui.xml
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window-ui.xml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- src/nautilus-navigation-window-ui.xml	12 Dec 2005 16:59:11 -0000	1.13
+++ src/nautilus-navigation-window-ui.xml	15 Dec 2005 14:25:58 -0000	1.14
@@ -30,6 +30,7 @@
 			<menuitem name="Go to Templates" action="Go to Templates"/>
 			<menuitem name="Go to Trash" action="Go to Trash"/>
 			<menuitem name="Go to Burn CD" action="Go to Burn CD"/>
+		        <menuitem name="Go to Network" action="Go to Network"/>
 			<menuitem name="Go to Location" action="Go to Location"/>
 			<menuitem name="Search" action="Search"/>
 			<separator/>
Index: src/nautilus-spatial-window-ui.xml
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window-ui.xml,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- src/nautilus-spatial-window-ui.xml	12 Dec 2005 16:59:11 -0000	1.16
+++ src/nautilus-spatial-window-ui.xml	15 Dec 2005 14:25:58 -0000	1.17
@@ -17,6 +17,7 @@
  		      <menuitem name="Go to Templates" action="Go to Templates"/>
 		      <menuitem name="Go to Trash" action="Go to Trash"/>
 		      <menuitem name="Go to Burn CD" action="Go to Burn CD"/>
+		      <menuitem name="Go to Network" action="Go to Network"/>
 		      <menuitem name="Search" action="Search"/>
 		      <separator/>
 		      <placeholder name="Bookmarks Placeholder"/>
Index: src/nautilus-window-menus.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window-menus.c,v
retrieving revision 1.292
retrieving revision 1.293
diff -u -r1.292 -r1.293
--- src/nautilus-window-menus.c	12 Dec 2005 16:59:11 -0000	1.292
+++ src/nautilus-window-menus.c	15 Dec 2005 14:25:58 -0000	1.293
@@ -72,7 +72,8 @@
 #define MENU_PATH_EXTENSION_ACTIONS                     "/MenuBar/File/Extension Actions"
 #define POPUP_PATH_EXTENSION_ACTIONS                     "/background/Before Zoom Items/Extension Actions"
 
-#define COMPUTER_URI          "computer:"
+#define NETWORK_URI          "network:"
+#define COMPUTER_URI         "computer:"
 #define BURN_CD_URI          "burn:"
 
 /* Struct that stores all the info necessary to activate a bookmark. */
@@ -280,6 +281,14 @@
 }
 
 static void
+action_go_to_network_callback (GtkAction *action, 
+				gpointer user_data) 
+{
+	nautilus_window_go_to (NAUTILUS_WINDOW (user_data),
+			       NETWORK_URI);
+}
+
+static void
 action_go_to_templates_callback (GtkAction *action,
 				 gpointer user_data) 
 {
@@ -677,6 +686,10 @@
     N_("_Computer"), NULL,           /* label, accelerator */
     N_("Go to the computer location"),                                  /* tooltip */ 
     G_CALLBACK (action_go_to_computer_callback) },
+  { "Go to Network", "gnome-fs-network",                        /* name, stock id */
+    N_("_Network"), NULL,           /* label, accelerator */
+    N_("Go to the network location"),                                  /* tooltip */ 
+    G_CALLBACK (action_go_to_network_callback) },
   { "Go to Templates", "stock_new-template",                        /* name, stock id */
     N_("T_emplates"), NULL,           /* label, accelerator */
     N_("Go to the templates folder"),                                  /* tooltip */ 
--- src/nautilus-places-sidebar.c.orig	2006-02-09 14:24:46.000000000 -0600
+++ src/nautilus-places-sidebar.c	2006-02-09 14:28:01.000000000 -0600
@@ -190,6 +190,12 @@ update_places (NautilusPlacesSidebar *si
 		gtk_tree_selection_select_iter (selection, &last_iter);
 	}	
 
+	mount_uri = "network:///"; /* No need to strdup */
+	last_iter = add_place (sidebar->store, PLACES_BUILT_IN,
+			       _("Network Servers"), "gnome-fs-network", mount_uri);
+	if (strcmp (location, mount_uri) == 0) {
+		gtk_tree_selection_select_iter (selection, &last_iter);
+	}
 
 	/* add mounted volumes */
 
openSUSE Build Service is sponsored by