* Fixes: NB#55446
[modest] / src / widgets / modest-window-mgr.c
index 7758ca5..528fa33 100644 (file)
@@ -53,6 +53,7 @@ enum {
 typedef struct _ModestWindowMgrPrivate ModestWindowMgrPrivate;
 struct _ModestWindowMgrPrivate {
        GList *window_list;
+       ModestWindow *main_window;
        gboolean fullscreen_mode;
        gboolean show_toolbars;
        gboolean show_toolbars_fullscreen;
@@ -109,6 +110,7 @@ modest_window_mgr_init (ModestWindowMgr *obj)
 
        priv = MODEST_WINDOW_MGR_GET_PRIVATE(obj);
        priv->window_list = NULL;
+       priv->main_window = NULL;
        priv->fullscreen_mode = FALSE;
 
        /* Could not initialize it from gconf, singletons are not
@@ -134,6 +136,9 @@ modest_window_mgr_finalize (GObject *obj)
                priv->window_list = NULL;
        }
 
+       /* Do not unref priv->main_window because it does not hold a
+          new reference */
+
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -163,6 +168,16 @@ modest_window_mgr_register_window (ModestWindowMgr *self,
                return;
        }
 
+       /* Check that it's not a second main window */
+       if (MODEST_IS_MAIN_WINDOW (window)) {
+               if (priv->main_window) {
+                       g_warning ("Trying to register a second main window");
+                       return;
+               } else {
+                       priv->main_window = window;
+               }
+       }
+
        /* Add to list. Keep a reference to the window */
        g_object_ref (window);
        priv->window_list = g_list_prepend (priv->window_list, window);
@@ -189,7 +204,7 @@ modest_window_mgr_register_window (ModestWindowMgr *self,
                show = priv->show_toolbars_fullscreen;
        else
                show = priv->show_toolbars;
-       modest_window_view_toolbar (window, show);
+       modest_window_show_toolbar (window, show);
 }
 
 static void
@@ -329,11 +344,11 @@ modest_window_mgr_set_fullscreen_mode (ModestWindowMgr *self,
        while (win) {
                if (on) {
                        gtk_window_fullscreen (GTK_WINDOW (win->data));
-                       modest_window_view_toolbar (MODEST_WINDOW (win->data), 
+                       modest_window_show_toolbar (MODEST_WINDOW (win->data), 
                                                    priv->show_toolbars_fullscreen);
                } else {
                        gtk_window_unfullscreen (GTK_WINDOW (win->data));
-                       modest_window_view_toolbar (MODEST_WINDOW (win->data), 
+                       modest_window_show_toolbar (MODEST_WINDOW (win->data), 
                                                    priv->show_toolbars);
                }
                win = g_list_next (win);
@@ -386,9 +401,21 @@ modest_window_mgr_show_toolbars (ModestWindowMgr *self,
                GList *win = priv->window_list;
 
                while (win) {
-                       modest_window_view_toolbar (MODEST_WINDOW (win->data),
+                       modest_window_show_toolbar (MODEST_WINDOW (win->data),
                                                    show_toolbars);
                        win = g_list_next (win);
                }
        }
 }
+
+ModestWindow*  
+modest_window_mgr_get_main_window (ModestWindowMgr *self)
+{
+       ModestWindowMgrPrivate *priv;
+
+       g_return_val_if_fail (MODEST_IS_WINDOW_MGR (self), NULL);
+
+       priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+
+       return priv->main_window;
+}