--- old-trash/sources/rb-source.h	2006-10-13 09:14:51.000000000 +1000
+++ new-trash/sources/rb-source.h	2006-10-13 09:14:51.000000000 +1000
@@ -172,6 +172,7 @@ gboolean	rb_source_can_move_to_trash	(RB
 gboolean	rb_source_can_copy		(RBSource *source);
 gboolean	rb_source_can_paste		(RBSource *source);
 gboolean	rb_source_can_add_to_queue	(RBSource *source);
+gboolean	rb_source_can_show_properties	(RBSource *source);
 
 GList *		rb_source_cut			(RBSource *source);
 GList *		rb_source_copy			(RBSource *source);
--- old-trash/sources/rb-source.c	2006-10-13 09:14:51.000000000 +1000
+++ new-trash/sources/rb-source.c	2006-10-13 09:14:51.000000000 +1000
@@ -56,7 +56,6 @@ static gboolean default_can_rename (RBSo
 static gboolean default_can_search (RBSource *source);
 static GList *default_copy (RBSource *source);
 static void default_reset_filters (RBSource *source);
-static void default_song_properties (RBSource *source);
 static gboolean default_try_playlist (RBSource *source);
 static RBSourceEOFType default_handle_eos (RBSource *source);
 static gboolean default_show_popup  (RBSource *source);
@@ -145,7 +144,6 @@ rb_source_class_init (RBSourceClass *kla
 	klass->impl_get_entry_view = default_get_entry_view;
 	klass->impl_copy = default_copy;
 	klass->impl_reset_filters = default_reset_filters;
-	klass->impl_song_properties = default_song_properties;
 	klass->impl_handle_eos = default_handle_eos;
 	klass->impl_get_config_widget = NULL;
 	klass->impl_receive_drag = NULL;
@@ -895,10 +894,12 @@ rb_source_reset_filters (RBSource *sourc
 	klass->impl_reset_filters (source);
 }
 
-static void
-default_song_properties (RBSource *source)
+gboolean
+rb_source_can_show_properties (RBSource *source)
 {
-	g_assert_not_reached ();
+	RBSourceClass *klass = RB_SOURCE_GET_CLASS (source);
+
+	return (klass->impl_song_properties != NULL);
 }
 
 void
@@ -906,6 +907,7 @@ rb_source_song_properties (RBSource *sou
 {
 	RBSourceClass *klass = RB_SOURCE_GET_CLASS (source);
 
+	g_assert (klass->impl_song_properties);
 	klass->impl_song_properties (source);
 }
 
--- old-trash/shell/rb-shell-clipboard.c	2006-10-13 09:14:51.000000000 +1000
+++ new-trash/shell/rb-shell-clipboard.c	2006-10-13 09:14:51.000000000 +1000
@@ -505,6 +505,7 @@ rb_shell_clipboard_sync (RBShellClipboar
 	gboolean can_add_to_queue = FALSE;
 	gboolean can_move_to_trash = FALSE;
 	gboolean can_select_all = FALSE;
+	gboolean can_show_properties = FALSE;
 	GtkAction *action;
 	RhythmDBEntryType entry_type;
 
@@ -534,6 +535,7 @@ rb_shell_clipboard_sync (RBShellClipboar
 		can_delete = rb_source_can_delete (clipboard->priv->source);
 		can_copy = rb_source_can_copy (clipboard->priv->source);
 		can_move_to_trash = rb_source_can_move_to_trash (clipboard->priv->source);
+		can_show_properties = rb_source_can_show_properties (clipboard->priv->source);
 
 		if (clipboard->priv->queue_source)
 			can_add_to_queue = rb_source_can_add_to_queue (clipboard->priv->source);
@@ -561,7 +563,7 @@ rb_shell_clipboard_sync (RBShellClipboar
 	g_object_set (G_OBJECT (action), "sensitive", can_add_to_queue, NULL);
 
 	action = gtk_action_group_get_action (clipboard->priv->actiongroup, "MusicProperties");
-	g_object_set (G_OBJECT (action), "sensitive", have_selection, NULL);
+	g_object_set (G_OBJECT (action), "sensitive", can_show_properties, NULL);
 
 	action = gtk_action_group_get_action (clipboard->priv->actiongroup, "QueueMusicProperties");
 	g_object_set (G_OBJECT (action), "sensitive", have_sidebar_selection, NULL);

