===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb-query-model.c,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -r1.145 -r1.146
--- rhythmdb-query-model.c	2006/10/07 02:57:16	1.145
+++ rhythmdb-query-model.c	2006/10/10 22:22:29	1.146
@@ -862,23 +862,27 @@
 	}
 
 	if (hidden) {
-		/* emit this, so things know why it was removed.
-		 * this is needed to update propery models correctly */
-		GValue true_val = { 0, };
-		GValue false_val = { 0, };
-
-		g_value_init (&true_val, G_TYPE_BOOLEAN);
-		g_value_set_boolean (&true_val, TRUE);
-		g_value_init (&false_val, G_TYPE_BOOLEAN);
-		g_value_set_boolean (&false_val, FALSE);
+		/* emit an entry-prop-changed signal so property models
+		 * can be updated correctly.  if we have a base model,
+		 * we'll propagate the parent's signal instead.
+		 */
+		if (model->priv->base_model == NULL) {
+			GValue true_val = { 0, };
+			GValue false_val = { 0, };
 
-		rb_debug ("emitting hidden-removal notification for %s",
-			  rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_LOCATION));
-		g_signal_emit (G_OBJECT (model),
-			       rhythmdb_query_model_signals[ENTRY_PROP_CHANGED], 0,
-			       entry, RHYTHMDB_PROP_HIDDEN, &false_val, &true_val);
-		g_value_unset (&true_val);
-		g_value_unset (&false_val);
+			g_value_init (&true_val, G_TYPE_BOOLEAN);
+			g_value_set_boolean (&true_val, TRUE);
+			g_value_init (&false_val, G_TYPE_BOOLEAN);
+			g_value_set_boolean (&false_val, FALSE);
+
+			rb_debug ("emitting hidden-removal notification for %s",
+				  rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_LOCATION));
+			g_signal_emit (G_OBJECT (model),
+				       rhythmdb_query_model_signals[ENTRY_PROP_CHANGED], 0,
+				       entry, RHYTHMDB_PROP_HIDDEN, &false_val, &true_val);
+			g_value_unset (&true_val);
+			g_value_unset (&false_val);
+		}
 
 		rhythmdb_query_model_filter_out_entry (model, entry);
 		return;
