Index: widgets/rb-library-browser.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/widgets/rb-library-browser.c,v
retrieving revision 1.7
diff -u -r1.7 rb-library-browser.c
--- widgets/rb-library-browser.c	29 Mar 2006 13:57:04 -0000	1.7
+++ widgets/rb-library-browser.c	14 Apr 2006 10:09:30 -0000
@@ -325,7 +325,7 @@
 	RhythmDBPropType prop;
 
 	g_object_get (G_OBJECT (view), "prop", &prop, NULL);
-	rb_library_browser_set_selection (widget, prop, selection);
+	rb_library_browser_set_selection (widget, prop, selection, FALSE);
 }
 static void
 view_selection_reset_cb (RBPropertyView *view, RBLibraryBrowser *widget)
@@ -333,7 +333,7 @@
 	RhythmDBPropType prop;
 
 	g_object_get (G_OBJECT (view), "prop", &prop, NULL);
-	rb_library_browser_set_selection (widget, prop, NULL);
+	rb_library_browser_set_selection (widget, prop, NULL, FALSE);
 }
 
 static void
@@ -586,7 +586,7 @@
 }
 
 void
-rb_library_browser_set_selection (RBLibraryBrowser *widget, RhythmDBPropType type, GList *selection)
+rb_library_browser_set_selection (RBLibraryBrowser *widget, RhythmDBPropType type, GList *selection, gboolean restore)
 {
 	RBLibraryBrowserPrivate *priv = RB_LIBRARY_BROWSER_GET_PRIVATE (widget);
 	GList *old_selection;
@@ -607,8 +607,10 @@
 		ignore_selection_changes (widget, view, TRUE);
 
 	rebuild_child_model (widget, prop_to_index (type), FALSE);
-	if (view)
+	if (view) 
 		ignore_selection_changes (widget, view, FALSE);
+	if (restore) 
+		restore_selection (widget, prop_to_index (type), FALSE);
 }
 
 GList*
Index: widgets/rb-library-browser.h
===================================================================
RCS file: /cvs/gnome/rhythmbox/widgets/rb-library-browser.h,v
retrieving revision 1.2
diff -u -r1.2 rb-library-browser.h
--- widgets/rb-library-browser.h	13 Mar 2006 22:04:53 -0000	1.2
+++ widgets/rb-library-browser.h	14 Apr 2006 10:09:30 -0000
@@ -58,7 +58,7 @@
 GList* rb_library_browser_get_property_views (RBLibraryBrowser *widget);
 
 gboolean rb_library_browser_has_selection (RBLibraryBrowser *widget);
-void rb_library_browser_set_selection (RBLibraryBrowser *widget, RhythmDBPropType type, GList *list);
+void rb_library_browser_set_selection (RBLibraryBrowser *widget, RhythmDBPropType type, GList *list, gboolean restore);
 
 
 G_END_DECLS
Index: sources/rb-browser-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-browser-source.c,v
retrieving revision 1.3
diff -u -r1.3 rb-browser-source.c
--- sources/rb-browser-source.c	14 Apr 2006 09:14:31 -0000	1.3
+++ sources/rb-browser-source.c	14 Apr 2006 10:09:31 -0000
@@ -521,7 +521,7 @@
 
 	g_object_get (G_OBJECT (shell), "selected-source", &source, NULL);
 	props = rb_source_gather_selected_properties (RB_SOURCE (source), RHYTHMDB_PROP_GENRE);
-	rb_library_browser_set_selection (source->priv->browser, RHYTHMDB_PROP_GENRE, props);
+	rb_library_browser_set_selection (source->priv->browser, RHYTHMDB_PROP_GENRE, props, TRUE);
 	rb_list_deep_free (props);
 	g_object_unref (source);
 }
@@ -537,7 +537,7 @@
 
 	g_object_get (G_OBJECT (shell), "selected-source", &source, NULL);
 	props = rb_source_gather_selected_properties (RB_SOURCE (source), RHYTHMDB_PROP_ARTIST);
-	rb_library_browser_set_selection (source->priv->browser, RHYTHMDB_PROP_ARTIST, props);
+	rb_library_browser_set_selection (source->priv->browser, RHYTHMDB_PROP_ARTIST, props, TRUE);
 	rb_list_deep_free (props);
 	g_object_unref (source);
 }
@@ -553,7 +553,7 @@
 
 	g_object_get (G_OBJECT (shell), "selected-source", &source, NULL);
 	props = rb_source_gather_selected_properties (RB_SOURCE (source), RHYTHMDB_PROP_ALBUM);
-	rb_library_browser_set_selection (source->priv->browser, RHYTHMDB_PROP_ALBUM, props);
+	rb_library_browser_set_selection (source->priv->browser, RHYTHMDB_PROP_ALBUM, props, TRUE);
 	rb_list_deep_free (props);
 	g_object_unref (source);
 }
