X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-main.c;h=52ad08b1e22452bccdd856ea7ab4127ae2be1118;hb=4f072d3a6f8d139f95adeed4607b70384144cf43;hp=7ff8e9a1a5e01e00fcccfc0cd0c18e07bc161161;hpb=db884009546eaa55ea71bcd46db03931dff08b98;p=modest diff --git a/src/modest-main.c b/src/modest-main.c index 7ff8e9a..52ad08b 100644 --- a/src/modest-main.c +++ b/src/modest-main.c @@ -34,10 +34,22 @@ #include #include #include +#include int main (int argc, char *argv[]) { + /* Usually we don't show the application at first, + * because we wait for the top_application D-Bus method to + * be called. But that's annoying when starting from the + * command line.: */ + gboolean show_ui_without_top_application_method = FALSE; + if (argc >= 2) { + printf ("DEBUG: %s: argv[1]=%s\n", __FUNCTION__, argv[1]); + if (strcmp (argv[1], "showui") == 0) + show_ui_without_top_application_method = TRUE; + } + ModestWindow *win; int retval = 0; @@ -45,7 +57,7 @@ main (int argc, char *argv[]) g_thread_init (NULL); gdk_threads_init (); - gdk_threads_enter (); + gdk_threads_enter (); /* CHECKED */ if (!gtk_init_check(&argc, &argv)) { g_printerr ("modest: failed to initialize gtk\n"); @@ -59,28 +71,37 @@ main (int argc, char *argv[]) goto cleanup; } - win = modest_main_window_new (); - gtk_widget_show_all (GTK_WIDGET(win)); - + /* this will create & register the window */ + win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr()); if (!win) { - g_printerr ("modest: failed to create main window\n"); + g_printerr ("modest: failed to get main window instance\n"); retval = 1; goto cleanup; } - modest_window_mgr_register_window (modest_runtime_get_window_mgr(), - win); - g_object_unref (win); + /* Usually, we only show the UI when we get the "top_application" D-Bus method. + * This allows modest to start via D-Bus activation to provide a service, + * without showing the UI. + * The UI will be shown later (or just after starting if no otehr D-Bus method was used), + * when we receive the "top_application" D-Bus method. + */ + if (show_ui_without_top_application_method) + gtk_widget_show_all (GTK_WIDGET(win)); + gtk_main (); - retval = 1; + retval = 0; cleanup: - gdk_threads_leave (); + gdk_threads_leave (); /* CHECKED */ - if (!modest_init_uninit ()) + if (!modest_init_uninit ()) { g_printerr ("modest: modest_init_uninit failed\n"); - + retval = 1; + } + + g_debug ("closing modest with retval %d", retval); + return retval; }