X-Git-Url: https://git.wpitchoune.net/gitweb/?p=psensor.git;a=blobdiff_plain;f=src%2Fmain.c;fp=src%2Fmain.c;h=764355d5b5e49f45710631b1f5058a7b8859c74b;hp=f6331f1386582095d33dd431f218ab64b26a91a4;hb=e6444eb3fa27922e70f4ae2bbcd32a3d6f295ab8;hpb=7264bd6090d2daa896959ed7ca86ea63365b9a90 diff --git a/src/main.c b/src/main.c index f6331f1..764355d 100644 --- a/src/main.c +++ b/src/main.c @@ -315,21 +315,23 @@ static struct option long_options[] = { {NULL, 0, NULL, 0} }; -static gboolean initial_window_show(gpointer data) +/* + * show the main window if there will be no way for the user to show + * it (no appindicator, no status icon). + */ +static gboolean check_ui_visible(gpointer data) { struct ui_psensor *ui; - log_debug("initial_window_show()"); + log_debug("check_ui_visible()"); ui = (struct ui_psensor *)data; log_debug("is_status_supported: %d", is_status_supported()); log_debug("is_appindicator_supported: %d", is_appindicator_supported()); - log_debug("hide_on_startup: %d", ui->config->hide_on_startup); - if (!ui->config->hide_on_startup - || (!is_appindicator_supported() && !is_status_supported())) + if (!is_appindicator_supported() && !is_status_supported()) ui_window_show(ui); ui_window_update(ui); @@ -547,14 +549,14 @@ int main(int argc, char **argv) gdk_notify_startup_complete(); - /* - * hack, did not find a cleaner solution. - * wait 30s to ensure that the status icon is attempted to be - * drawn before determining whether the main window must be - * show. - */ - if (ui.config->hide_on_startup) - g_timeout_add(30000, (GSourceFunc)initial_window_show, &ui); + log_debug("hide_on_startup: %d", ui.config->hide_on_startup); + if (ui.config->hide_on_startup) + /* Wait 30s to allow attempt to show status icon or other UI, + * then check whether any UI is accessible. If not, then main + * window must be shown despite hide_on_startup preference. + * There may be a cleaner way to deal with this. + */ + g_timeout_add(30000, (GSourceFunc)check_ui_visible, &ui); else ui_window_show(&ui);