Fixes NB#78602
[modest] / src / maemo / modest-msg-view-window.c
index 5159c34..7246417 100644 (file)
@@ -424,19 +424,9 @@ modest_msg_view_window_init (ModestMsgViewWindow *obj)
        init_window (MODEST_MSG_VIEW_WINDOW(obj));
        
        /* Set window icon */
        init_window (MODEST_MSG_VIEW_WINDOW(obj));
        
        /* Set window icon */
-       window_icon = modest_platform_get_icon (MODEST_APP_MSG_VIEW_ICON); 
+       window_icon = modest_platform_get_icon (MODEST_APP_MSG_VIEW_ICON, MODEST_ICON_SIZE_BIG); 
        if (window_icon) {
        if (window_icon) {
-               /* scale the icon, because it won't be shown unless it's
-                * 64 x 54 -- hildon quirk. this looks a bit ugly now,
-                * so waiting for correctly sized icons, then this scaling
-                * code can disappear -- djcb
-                */
-               GdkPixbuf *scaled =
-                       gdk_pixbuf_scale_simple (window_icon, 64, 54, GDK_INTERP_BILINEAR);
-               if (scaled) {
-                       gtk_window_set_icon (GTK_WINDOW (obj), scaled);
-                       g_object_unref (scaled);
-               }
+               gtk_window_set_icon (GTK_WINDOW (obj), window_icon);
                g_object_unref (window_icon);
        }       
        
                g_object_unref (window_icon);
        }       
        
@@ -544,17 +534,6 @@ set_toolbar_mode (ModestMsgViewWindow *self,
 }
 
 
 }
 
 
-static GtkWidget *
-menubar_to_menu (GtkUIManager *ui_manager)
-{
-       GtkWidget *main_menu;
-
-       /* Get the menubar from the UI manager */
-       main_menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
-
-       return main_menu;
-}
-
 static void
 init_window (ModestMsgViewWindow *obj)
 {
 static void
 init_window (ModestMsgViewWindow *obj)
 {
@@ -762,7 +741,7 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self,
        priv->msg_uid = g_strdup (msg_uid);
 
        /* Menubar */
        priv->msg_uid = g_strdup (msg_uid);
 
        /* Menubar */
-       parent_priv->menubar = menubar_to_menu (parent_priv->ui_manager);
+       parent_priv->menubar = modest_maemo_utils_get_manager_menubar_as_menu (parent_priv->ui_manager, "/MenuBar");
        hildon_window_set_menu    (HILDON_WINDOW(obj), GTK_MENU(parent_priv->menubar));
        gtk_widget_show (parent_priv->menubar);
        parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new();
        hildon_window_set_menu    (HILDON_WINDOW(obj), GTK_MENU(parent_priv->menubar));
        gtk_widget_show (parent_priv->menubar);
        parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new();
@@ -880,14 +859,12 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg,
         * and change the list selection when necessary: */
 
        main_window = modest_window_mgr_get_main_window(mgr, FALSE); /* don't create */
         * and change the list selection when necessary: */
 
        main_window = modest_window_mgr_get_main_window(mgr, FALSE); /* don't create */
-       if (!main_window) {
-               g_warning ("%s: BUG: no main window", __FUNCTION__);
-               return NULL;
+       if (main_window) {
+               header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget(
+                                                        MODEST_MAIN_WINDOW(main_window),
+                                                        MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW));
        }
        
        }
        
-       header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget(
-                                                MODEST_MAIN_WINDOW(main_window),
-                                                MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW));
        if (header_view != NULL){
                header_folder = modest_header_view_get_folder(header_view);
                priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == TNY_FOLDER_TYPE_OUTBOX);
        if (header_view != NULL){
                header_folder = modest_header_view_get_folder(header_view);
                priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == TNY_FOLDER_TYPE_OUTBOX);
@@ -898,9 +875,14 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg,
        }
 
        priv->header_model = g_object_ref(model);
        }
 
        priv->header_model = g_object_ref(model);
-       priv->row_reference = gtk_tree_row_reference_copy (row_reference);
-       priv->next_row_reference = gtk_tree_row_reference_copy (row_reference);
-       select_next_valid_row (model, &(priv->next_row_reference), TRUE);
+       if (row_reference) {
+               priv->row_reference = gtk_tree_row_reference_copy (row_reference);
+               priv->next_row_reference = gtk_tree_row_reference_copy (row_reference);
+               select_next_valid_row (model, &(priv->next_row_reference), TRUE);
+       } else {
+               priv->row_reference = NULL;
+               priv->next_row_reference = NULL;
+       }
 
        priv->row_changed_handler = g_signal_connect(
                        GTK_TREE_MODEL(model), "row-changed",
 
        priv->row_changed_handler = g_signal_connect(
                        GTK_TREE_MODEL(model), "row-changed",
@@ -957,7 +939,9 @@ modest_msg_view_window_new_for_search_result (TnyMsg *msg,
        priv->is_search_result = TRUE;
 
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
        priv->is_search_result = TRUE;
 
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+       
        update_window_title (window);
        update_window_title (window);
+       modest_msg_view_window_update_priority (window);
 
        return MODEST_WINDOW(window);
 }
 
        return MODEST_WINDOW(window);
 }
@@ -1027,11 +1011,13 @@ void modest_msg_view_window_on_row_inserted(
         * msg-view is in it, and thus we do not need any actions but
         * to check the dimming rules.*/
        if(priv->header_model != NULL){
         * msg-view is in it, and thus we do not need any actions but
         * to check the dimming rules.*/
        if(priv->header_model != NULL){
-               gtk_tree_row_reference_free(priv->next_row_reference);
-               priv->next_row_reference = gtk_tree_row_reference_copy(
+               if (priv->row_reference) {
+                       gtk_tree_row_reference_free(priv->next_row_reference);
+                       priv->next_row_reference = gtk_tree_row_reference_copy(
                                priv->row_reference);
                                priv->row_reference);
-               select_next_valid_row (priv->header_model,
-                               &(priv->next_row_reference), FALSE);
+                       select_next_valid_row (priv->header_model,
+                                              &(priv->next_row_reference), FALSE);
+               }
                modest_ui_actions_check_toolbar_dimming_rules (
                                MODEST_WINDOW (window));
                return;
                modest_ui_actions_check_toolbar_dimming_rules (
                                MODEST_WINDOW (window));
                return;
@@ -1043,12 +1029,16 @@ void modest_msg_view_window_on_row_inserted(
        gtk_tree_model_get (new_model, tree_iter, 
                        TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, -1);
        uid = modest_tny_folder_get_header_unique_id(header);
        gtk_tree_model_get (new_model, tree_iter, 
                        TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, -1);
        uid = modest_tny_folder_get_header_unique_id(header);
-       g_object_unref(G_OBJECT(header));
-       header = NULL;
        if(!g_str_equal(priv->msg_uid, uid)){
                g_free(uid);
        if(!g_str_equal(priv->msg_uid, uid)){
                g_free(uid);
+               g_object_unref(G_OBJECT(header));
+               header = NULL;
                return;
        }
                return;
        }
+       if (!(tny_header_get_flags (header) & TNY_HEADER_FLAG_SEEN))
+               tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN);
+       g_object_unref(G_OBJECT(header));
+       header = NULL;
        g_free(uid);
 
        /* Setup row_reference for the actual msg. */
        g_free(uid);
 
        /* Setup row_reference for the actual msg. */
@@ -1145,9 +1135,11 @@ void modest_msg_view_window_update_model_replaced(
        priv->rows_reordered_handler = 0;
        g_object_unref(priv->header_model);
        priv->header_model = NULL;
        priv->rows_reordered_handler = 0;
        g_object_unref(priv->header_model);
        priv->header_model = NULL;
-       g_object_unref(priv->row_reference);
+       if (priv->row_reference)
+               g_object_unref(priv->row_reference);
        priv->row_reference = NULL;
        priv->row_reference = NULL;
-       g_object_unref(priv->next_row_reference);
+       if (priv->next_row_reference)
+               g_object_unref(priv->next_row_reference);
        priv->next_row_reference = NULL;
 
        modest_ui_actions_check_toolbar_dimming_rules(MODEST_WINDOW(window));
        priv->next_row_reference = NULL;
 
        modest_ui_actions_check_toolbar_dimming_rules(MODEST_WINDOW(window));
@@ -1189,7 +1181,7 @@ modest_msg_view_window_get_header (ModestMsgViewWindow *self)
        /* If the message was not obtained from a treemodel,
         * for instance if it was opened directly by the search UI:
         */
        /* If the message was not obtained from a treemodel,
         * for instance if it was opened directly by the search UI:
         */
-       if (priv->header_model == NULL) {
+       if (priv->header_model == NULL || priv->row_reference == NULL) {
                msg = modest_msg_view_window_get_message (self);
                if (msg) {
                        header = tny_msg_get_header (msg);
                msg = modest_msg_view_window_get_message (self);
                if (msg) {
                        header = tny_msg_get_header (msg);
@@ -1480,7 +1472,7 @@ modest_msg_view_window_last_message_selected (ModestMsgViewWindow *window)
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        /*if no model (so no rows at all), then virtually we are the last*/
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        /*if no model (so no rows at all), then virtually we are the last*/
-       if (!priv->header_model)
+       if (!priv->header_model || !priv->row_reference)
                return TRUE;
 
        path = gtk_tree_row_reference_get_path (priv->row_reference);
                return TRUE;
 
        path = gtk_tree_row_reference_get_path (priv->row_reference);
@@ -1549,7 +1541,7 @@ modest_msg_view_window_first_message_selected (ModestMsgViewWindow *window)
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        /*if no model (so no rows at all), then virtually we are the first*/
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        /*if no model (so no rows at all), then virtually we are the first*/
-       if (!priv->header_model)
+       if (!priv->header_model || !priv->row_reference)
                return TRUE;
 
        path = gtk_tree_row_reference_get_path (priv->row_reference);
                return TRUE;
 
        path = gtk_tree_row_reference_get_path (priv->row_reference);
@@ -1675,6 +1667,9 @@ modest_msg_view_window_select_next_message (ModestMsgViewWindow *window)
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), FALSE);
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), FALSE);
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
+       if (!priv->row_reference)
+               return FALSE;
+
        /* Update the next row reference if it's not valid. This could
           happen if for example the header which it was pointing to,
           was deleted. The best place to do it is in the row-deleted
        /* Update the next row reference if it's not valid. This could
           happen if for example the header which it was pointing to,
           was deleted. The best place to do it is in the row-deleted
@@ -1766,7 +1761,7 @@ modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window)
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        /* Return inmediatly if there is no header model */
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        /* Return inmediatly if there is no header model */
-       if (!priv->header_model)
+       if (!priv->header_model || !priv->row_reference)
                return FALSE;
 
        path = gtk_tree_row_reference_get_path (priv->row_reference);
                return FALSE;
 
        path = gtk_tree_row_reference_get_path (priv->row_reference);
@@ -1815,6 +1810,11 @@ view_msg_cb (ModestMailOperation *mail_op,
        ModestMsgViewWindowPrivate *priv = NULL;
        GtkTreeRowReference *row_reference = NULL;
 
        ModestMsgViewWindowPrivate *priv = NULL;
        GtkTreeRowReference *row_reference = NULL;
 
+       if (canceled) {
+               g_object_unref (self);
+               return;
+       }
+       
        /* If there was any error */
        row_reference = (GtkTreeRowReference *) user_data;
        if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg)) {
        /* If there was any error */
        row_reference = (GtkTreeRowReference *) user_data;
        if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg)) {
@@ -1828,21 +1828,25 @@ view_msg_cb (ModestMailOperation *mail_op,
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
 
        /* Update the row reference */
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
 
        /* Update the row reference */
-       gtk_tree_row_reference_free (priv->row_reference);
-       priv->row_reference = gtk_tree_row_reference_copy (row_reference);
-       priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference);
-       select_next_valid_row (priv->header_model, &(priv->next_row_reference), TRUE);
-       gtk_tree_row_reference_free (row_reference);
+       if (priv->row_reference != NULL) {
+               gtk_tree_row_reference_free (priv->row_reference);
+               priv->row_reference = gtk_tree_row_reference_copy (row_reference);
+               priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference);
+               select_next_valid_row (priv->header_model, &(priv->next_row_reference), TRUE);
+               gtk_tree_row_reference_free (row_reference);
+       }
 
        /* Mark header as read */
        if (!(tny_header_get_flags (header) & TNY_HEADER_FLAG_SEEN))
                tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN);
 
        /* Set new message */
 
        /* Mark header as read */
        if (!(tny_header_get_flags (header) & TNY_HEADER_FLAG_SEEN))
                tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN);
 
        /* Set new message */
-       tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
-       modest_msg_view_window_update_priority (self);
-       update_window_title (MODEST_MSG_VIEW_WINDOW (self));
-       modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view));
+       if (priv->msg_view != NULL && TNY_IS_MSG_VIEW (priv->msg_view)) {
+               tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+               modest_msg_view_window_update_priority (self);
+               update_window_title (MODEST_MSG_VIEW_WINDOW (self));
+               modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view));
+       }
 
        /* Set the new message uid of the window  */
        if (priv->msg_uid) {
 
        /* Set the new message uid of the window  */
        if (priv->msg_uid) {
@@ -1889,12 +1893,12 @@ static void
 modest_msg_view_window_update_priority (ModestMsgViewWindow *window)
 {
        ModestMsgViewWindowPrivate *priv;
 modest_msg_view_window_update_priority (ModestMsgViewWindow *window)
 {
        ModestMsgViewWindowPrivate *priv;
+       TnyHeader *header = NULL;
        TnyHeaderFlags flags = 0;
 
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
        TnyHeaderFlags flags = 0;
 
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
-       if (priv->header_model) {
-               TnyHeader *header;
+       if (priv->header_model && priv->row_reference) {
                GtkTreeIter iter;
                GtkTreePath *path = NULL;
 
                GtkTreeIter iter;
                GtkTreePath *path = NULL;
 
@@ -1906,17 +1910,72 @@ modest_msg_view_window_update_priority (ModestMsgViewWindow *window)
 
                gtk_tree_model_get (priv->header_model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
                                    &header, -1);
 
                gtk_tree_model_get (priv->header_model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
                                    &header, -1);
-               if (header) {
-                       flags = tny_header_get_flags (header);
-                       g_object_unref(G_OBJECT(header));
-               }
                gtk_tree_path_free (path);
                gtk_tree_path_free (path);
+       } else {
+               TnyMsg *msg;
+               msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
+               if (msg) {
+                       header = tny_msg_get_header (msg);
+                       g_object_unref (msg);
+               }
+       }
+
+       if (header) {
+               flags = tny_header_get_flags (header);
+               g_object_unref(G_OBJECT(header));
        }
 
        modest_msg_view_set_priority (MODEST_MSG_VIEW(priv->msg_view), flags);
 
 }
 
        }
 
        modest_msg_view_set_priority (MODEST_MSG_VIEW(priv->msg_view), flags);
 
 }
 
+static void
+toolbar_resize (ModestMsgViewWindow *self)
+{
+       ModestMsgViewWindowPrivate *priv = NULL;
+       ModestWindowPrivate *parent_priv = NULL;
+       GtkWidget *widget;
+       gint static_button_size;
+       ModestWindowMgr *mgr;
+
+       g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self));
+       priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+
+       mgr = modest_runtime_get_window_mgr ();
+       static_button_size = modest_window_mgr_get_fullscreen_mode (mgr)?118:108;
+
+       if (parent_priv->toolbar) {
+               /* left size buttons */
+               widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageReply");
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
+               widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageMoveTo");
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
+               widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarDeleteMessage");
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
+               widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/FindInMessage");
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+               gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
+               
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), FALSE);
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE);
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->next_toolitem), TRUE);
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->next_toolitem), TRUE);
+               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->prev_toolitem), TRUE);
+               gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->prev_toolitem), TRUE);
+       }
+               
+}
+
 static gboolean
 modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowState *event, gpointer userdata)
 {
 static gboolean
 modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowState *event, gpointer userdata)
 {
@@ -1937,6 +1996,7 @@ modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowStat
                if (is_fullscreen != active) {
                        gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (fs_toggle_action), is_fullscreen);
                }
                if (is_fullscreen != active) {
                        gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (fs_toggle_action), is_fullscreen);
                }
+               toolbar_resize (MODEST_MSG_VIEW_WINDOW (widget));
        }
 
        return FALSE;
        }
 
        return FALSE;
@@ -1944,16 +2004,6 @@ modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowStat
 }
 
 static void
 }
 
 static void
-set_homogeneous (GtkWidget *widget,
-                gpointer data)
-{
-       if (GTK_IS_TOOL_ITEM (widget)) {
-               gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), TRUE);
-               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), TRUE);
-       }
-}
-
-static void
 modest_msg_view_window_show_toolbar (ModestWindow *self,
                                     gboolean show_toolbar)
 {
 modest_msg_view_window_show_toolbar (ModestWindow *self,
                                     gboolean show_toolbar)
 {
@@ -1976,18 +2026,11 @@ modest_msg_view_window_show_toolbar (ModestWindow *self,
                                                                  "/ToolBar");
                gtk_widget_set_no_show_all (parent_priv->toolbar, TRUE);
 
                                                                  "/ToolBar");
                gtk_widget_set_no_show_all (parent_priv->toolbar, TRUE);
 
-               /* Set homogeneous toolbar */
-               gtk_container_foreach (GTK_CONTAINER (parent_priv->toolbar), 
-                                      set_homogeneous, NULL);
-
                priv->progress_toolitem = GTK_WIDGET (gtk_tool_item_new ());
                priv->cancel_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarCancel");
                priv->next_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNext");
                priv->prev_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageBack");
                priv->progress_toolitem = GTK_WIDGET (gtk_tool_item_new ());
                priv->cancel_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarCancel");
                priv->next_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNext");
                priv->prev_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageBack");
-               gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE);
-               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE);
-               gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE);
-               gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE);
+               toolbar_resize (MODEST_MSG_VIEW_WINDOW (self));
 
                /* Add ProgressBar (Transfer toolbar) */ 
                priv->progress_bar = modest_progress_bar_widget_new ();
 
                /* Add ProgressBar (Transfer toolbar) */ 
                priv->progress_bar = modest_progress_bar_widget_new ();
@@ -2141,14 +2184,15 @@ on_mail_operation_started (ModestMailOperation *mail_op,
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
        op_type = modest_mail_operation_get_type_operation (mail_op);
        tmp = priv->progress_widgets;
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
        op_type = modest_mail_operation_get_type_operation (mail_op);
        tmp = priv->progress_widgets;
-       
-       if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE || op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ) {
-               set_toolbar_transfer_mode(self);
-               while (tmp) {
-                       modest_progress_object_add_operation (
-                                       MODEST_PROGRESS_OBJECT (tmp->data),
-                                       mail_op);
-                       tmp = g_slist_next (tmp);
+       if (G_OBJECT (self) == modest_mail_operation_get_source(mail_op)) {
+               if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE || op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ) {
+                       set_toolbar_transfer_mode(self);
+                       while (tmp) {
+                               modest_progress_object_add_operation (
+                                               MODEST_PROGRESS_OBJECT (tmp->data),
+                                               mail_op);
+                               tmp = g_slist_next (tmp);
+                       }
                }
        }
 }
                }
        }
 }