From 89c34e2fc5ef4650012be5ac6764864abfa76717 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Tue, 3 Apr 2012 07:51:13 +0000 Subject: [PATCH] fixed LP971098 : fixed systray and application indicator both visible when unity is restarted --- src/main.c | 1 + src/ui_appindicator.c | 10 +++++++++- src/ui_status.c | 14 +++++++++++++- src/ui_status.h | 2 ++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 9d89c01..f104c6a 100644 --- a/src/main.c +++ b/src/main.c @@ -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 */ diff --git a/src/ui_appindicator.c b/src/ui_appindicator.c index dce718f..82553dd 100644 --- a/src/ui_appindicator.c +++ b/src/ui_appindicator.c @@ -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; } diff --git a/src/ui_status.c b/src/ui_status.c index 90f6f7a..d9231f3 100644 --- a/src/ui_status.c +++ b/src/ui_status.c @@ -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); + } +} diff --git a/src/ui_status.h b/src/ui_status.h index b812038..7545345 100644 --- a/src/ui_status.h +++ b/src/ui_status.h @@ -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 -- 2.7.4