fixed LP971098 : fixed systray and application indicator both visible when unity...
authorJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 3 Apr 2012 07:51:13 +0000 (07:51 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 3 Apr 2012 07:51:13 +0000 (07:51 +0000)
src/main.c
src/ui_appindicator.c
src/ui_status.c
src/ui_status.h

index 9d89c01..f104c6a 100644 (file)
@@ -497,6 +497,7 @@ int main(int argc, char **argv)
 
 #if !defined(HAVE_APPINDICATOR) && !defined(HAVE_APPINDICATOR_029)
        ui_status_init(&ui);
+       ui_status_set_visible(1);
 #endif
 
        /* main window */
index dce718f..82553dd 100644 (file)
@@ -218,11 +218,17 @@ void ui_appindicator_update(struct ui_psensor *ui, unsigned int attention)
 
 static GtkStatusIcon *unity_fallback(AppIndicator *indicator)
 {
+       GtkStatusIcon *ico;
+
        log_debug("ui_appindicator#unity_fallback");
 
        appindicator_supported = 0;
 
-       return ui_status_get_icon(ui_psensor);
+       ico = ui_status_get_icon(ui_psensor);
+
+       ui_status_set_visible(1);
+
+       return ico;
 }
 
 static void
@@ -230,6 +236,8 @@ unity_unfallback(AppIndicator *indicator, GtkStatusIcon *status_icon)
 {
        log_debug("ui_appindicator#unity_unfallback");
 
+       ui_status_set_visible(0);
+
        appindicator_supported = 1;
 }
 
index 90f6f7a..d9231f3 100644 (file)
@@ -50,7 +50,7 @@ void ui_status_init(struct ui_psensor *ui)
 
        status = gtk_status_icon_new();
        gtk_status_icon_set_from_icon_name(status, ICON);
-       gtk_status_icon_set_visible(status, TRUE);
+       ui_status_set_visible(0);
 
        g_signal_connect(G_OBJECT(status),
                         "popup-menu",
@@ -97,3 +97,15 @@ GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui)
 
        return status;
 }
+
+void ui_status_set_visible(unsigned int visible)
+{
+       log_debug("ui_status_set_visible(%d)", visible);
+
+       if (status) {
+               if (visible)
+                       gtk_status_icon_set_visible(status, TRUE);
+               else
+                       gtk_status_icon_set_visible(status, FALSE);
+       }
+}
index b812038..7545345 100644 (file)
@@ -29,5 +29,7 @@ void ui_status_update(struct ui_psensor *ui, unsigned int attention);
 /* Whether status icon is supported i.e. visible. */
 int is_status_supported();
 GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui);
+/* Whether the statuc icon should be visible.*/
+void ui_status_set_visible(unsigned int visible);
 
 #endif