aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libindicator/indicator-object.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c
index d0b3ecf..1d0db58 100644
--- a/libindicator/indicator-object.c
+++ b/libindicator/indicator-object.c
@@ -886,9 +886,16 @@ indicator_object_set_visible (IndicatorObject * io, gboolean visible)
GList * l;
GList * entries = get_all_entries (io);
const guint signal_id = signals[visible ? ENTRY_ADDED : ENTRY_REMOVED];
+ EntryVisibility visibility = visible ? ENTRY_VISIBLE : ENTRY_INVISIBLE;
const GQuark detail = (GQuark)0;
+
for (l=entries; l!=NULL; l=l->next)
- g_signal_emit(io, signal_id, detail, l->data);
+ {
+ IndicatorObjectEntry *entry = l->data;
+ EntryVisibility v = entry_get_private (io, entry)->visibility;
+ if (v == ENTRY_INIT || v != visibility)
+ g_signal_emit(io, signal_id, detail, entry);
+ }
g_list_free (entries);
}