From f59f6a9e9ef3cce2306df20640a14d41ba73b14a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sun, 13 Nov 2011 13:05:39 +0000 Subject: [PATCH] status --- src/main.c | 2 ++ src/ui_appindicator.c | 4 +++- src/ui_status.c | 14 ++++++++++---- src/ui_status.h | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 2b2b5ca..5e008db 100644 --- a/src/main.c +++ b/src/main.c @@ -462,7 +462,9 @@ int main(int argc, char **argv) associate_colors(ui.sensors); associate_cb_alarm_raised(ui.sensors, &ui); +#if !defined(HAVE_APPINDICATOR) && !defined(HAVE_APPINDICATOR_029) ui_status_init(&ui); +#endif /* main window */ ui_window_create(&ui); diff --git a/src/ui_appindicator.c b/src/ui_appindicator.c index 720ab49..fa84992 100644 --- a/src/ui_appindicator.c +++ b/src/ui_appindicator.c @@ -35,6 +35,7 @@ static GtkMenuItem **sensor_menu_items; static GtkWidget *main_window; static int appindicator_supported = 1; static AppIndicator *indicator; +static struct ui_psensor *ui_psensor; static void cb_menu_show(GtkMenuItem *mi, gpointer data) { @@ -219,7 +220,7 @@ static GtkStatusIcon *unity_fallback(AppIndicator *indicator) appindicator_supported = 0; - return ui_status_get_icon(); + return ui_status_get_icon(ui_psensor); } static void @@ -234,6 +235,7 @@ void ui_appindicator_init(struct ui_psensor *ui) { GtkWidget *menu; + ui_psensor = ui; main_window = ui->main_window; indicator = app_indicator_new diff --git a/src/ui_status.c b/src/ui_status.c index df79172..f61e8a1 100644 --- a/src/ui_status.c +++ b/src/ui_status.c @@ -63,14 +63,17 @@ void ui_status_init(struct ui_psensor *ui) int is_status_supported() { - return gtk_status_icon_is_embedded(status); + return status && gtk_status_icon_is_embedded(status); } void ui_status_cleanup() { log_debug("ui_status_cleanup()"); - - g_object_unref(G_OBJECT(status)); + + if (status) { + g_object_unref(G_OBJECT(status)); + status = NULL; + } } void ui_status_update(struct ui_psensor *ui, unsigned int attention) @@ -85,7 +88,10 @@ void ui_status_update(struct ui_psensor *ui, unsigned int attention) status_attention = attention; } -GtkStatusIcon *ui_status_get_icon() +GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui) { + if (!status) + ui_status_init(ui); + return status; } diff --git a/src/ui_status.h b/src/ui_status.h index 40cc3c5..be04bb8 100644 --- a/src/ui_status.h +++ b/src/ui_status.h @@ -28,6 +28,6 @@ void ui_status_cleanup(); 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(); +GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui); #endif -- 2.7.4