Removed the priv->current_top field. HildonWindow gives us that information
authorSergio Villar Senin <svillar@igalia.com>
Mon, 26 Jan 2009 09:09:04 +0000 (09:09 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Mon, 26 Jan 2009 09:09:04 +0000 (09:09 +0000)
pmo-trunk-r7282

src/hildon2/modest-hildon2-window-mgr.c

index 738c2c5..e551185 100644 (file)
@@ -171,7 +171,6 @@ modest_hildon2_window_mgr_instance_init (ModestHildon2WindowMgr *obj)
        priv = MODEST_HILDON2_WINDOW_MGR_GET_PRIVATE(obj);
        priv->window_list = NULL;
        priv->fullscreen_mode = FALSE;
-       priv->current_top = NULL;
        priv->window_state_uids = NULL;
 
        priv->modal_windows = g_queue_new ();
@@ -359,6 +358,7 @@ modest_hildon2_window_mgr_register_window (ModestWindowMgr *self,
        HildonProgram *program;
        HildonWindowStack *stack;
        gboolean nested_msg = FALSE;
+       ModestWindow *current_top;
 
        g_return_val_if_fail (MODEST_IS_HILDON2_WINDOW_MGR (self), FALSE);
        g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
@@ -384,28 +384,27 @@ modest_hildon2_window_mgr_register_window (ModestWindowMgr *self,
        g_object_ref (window);
        priv->window_list = g_list_prepend (priv->window_list, window);
 
-       if (priv->current_top == NULL)
-               priv->current_top = (ModestWindow *) hildon_window_stack_peek (stack);
+       current_top = (ModestWindow *) hildon_window_stack_peek (stack);
        nested_msg = MODEST_IS_MSG_VIEW_WINDOW (window) && 
                MODEST_IS_MSG_VIEW_WINDOW (parent);
 
        /* Close views if they're being shown. Nevertheless we must
           allow nested messages */
        if (!nested_msg &&
-           (MODEST_IS_MSG_EDIT_WINDOW (priv->current_top) ||
-            MODEST_IS_MSG_VIEW_WINDOW (priv->current_top))) {
+           (MODEST_IS_MSG_EDIT_WINDOW (current_top) ||
+            MODEST_IS_MSG_VIEW_WINDOW (current_top))) {
                gboolean retval;
 
                /* If the current view has modal dialogs then
                   we fail to register the new view */
-               if ((priv->current_top != NULL) &&
-                   window_has_modals (MODEST_WINDOW (priv->current_top))) {
+               if ((current_top != NULL) &&
+                   window_has_modals (MODEST_WINDOW (current_top))) {
                        /* Window on top but it has opened dialogs */
                        goto fail;
                }
 
                /* Close the current view */
-               g_signal_emit_by_name (G_OBJECT (priv->current_top), "delete-event", NULL, &retval);
+               g_signal_emit_by_name (G_OBJECT (current_top), "delete-event", NULL, &retval);
                if (retval == TRUE) {
                        /* Cancelled closing top window, then we fail to register */
                        goto fail;
@@ -425,9 +424,9 @@ fail:
        /* Add to list. Keep a reference to the window */
        priv->window_list = g_list_remove (priv->window_list, window);
        g_object_unref (window);
-       priv->current_top = (ModestWindow *) hildon_window_stack_peek (stack);
-       if (priv->current_top)
-               gtk_window_present (GTK_WINDOW (priv->current_top));
+       current_top = (ModestWindow *) hildon_window_stack_peek (stack);
+       if (current_top)
+               gtk_window_present (GTK_WINDOW (current_top));
        return FALSE;
 }
 
@@ -558,13 +557,6 @@ modest_hildon2_window_mgr_unregister_window (ModestWindowMgr *self,
        /* cancel open and receive operations */
        cancel_window_operations (window);
 
-       /* Check if it's the topmost window, and remove the window from the stack.
-        * This is needed for the cases there's no other topmost window that will
-        * replace it in topmost handler.
-        */
-        if (window == priv->current_top)
-                priv->current_top = NULL;
-
        /* Disconnect the "window-state-event" handler, we won't need it anymore */
        if (priv->window_state_uids) {
                priv->window_state_uids = 
@@ -709,10 +701,9 @@ modest_hildon2_window_mgr_show_initial_window (ModestWindowMgr *self)
 static ModestWindow *
 modest_hildon2_window_mgr_get_current_top (ModestWindowMgr *self)
 {
-       ModestHildon2WindowMgrPrivate *priv;
-
-       priv = MODEST_HILDON2_WINDOW_MGR_GET_PRIVATE (self);
-       return priv->current_top;
+       HildonWindowStack *stack;
+       stack = hildon_window_stack_get_default ();
+       return (ModestWindow *) hildon_window_stack_peek (stack);
 }
 
 static gint