* tiny optimization for the header view: avoid one needless
[modest] / src / modest-main.c
index edf74b3..52ad08b 100644 (file)
 #include <modest-init.h>
 #include <gdk/gdk.h>
 #include <widgets/modest-main-window.h>
+#include <string.h>
 
 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,24 +71,29 @@ 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 = 0;
 
 cleanup:
-       gdk_threads_leave ();
+       gdk_threads_leave (); /* CHECKED */
 
        if (!modest_init_uninit ()) {
                g_printerr ("modest: modest_init_uninit failed\n");