* Fixes NB#101253, dimm toolbar buttons when a message could not be retrieved after...
authorSergio Villar Senin <svillar@igalia.com>
Tue, 10 Feb 2009 19:00:28 +0000 (19:00 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Tue, 10 Feb 2009 19:00:28 +0000 (19:00 +0000)
pmo-trunk-r7453

src/hildon2/modest-msg-view-window.c
src/modest-ui-dimming-rules.c

index 47eef27..4747bb5 100644 (file)
@@ -1799,6 +1799,7 @@ message_reader_performer (gboolean canceled,
 
        info = (MsgReaderInfo *) user_data;
        if (canceled || err) {
+               update_window_title (MODEST_MSG_VIEW_WINDOW (parent_window));
                goto frees;
        }
 
@@ -1809,7 +1810,7 @@ message_reader_performer (gboolean canceled,
        mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window),
                                                                 modest_ui_actions_disk_operations_error_handler, 
                                                                 NULL, NULL);
-                               
+
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
        modest_mail_operation_get_msg (mail_op, info->header, TRUE, view_msg_cb, info->row_reference);
        g_object_unref (mail_op);
@@ -1865,9 +1866,11 @@ message_reader (ModestMsgViewWindow *window,
 
                        response = modest_platform_run_confirmation_dialog (GTK_WINDOW (window),
                                                                            _("mcen_nc_get_msg"));
-                       if (response == GTK_RESPONSE_CANCEL)
+                       if (response == GTK_RESPONSE_CANCEL) {
+                               update_window_title (window);
                                return FALSE;
-               
+                       }
+
                        folder = tny_header_get_folder (header);
                        info = g_slice_new (MsgReaderInfo);
                        info->header = g_object_ref (header);
@@ -2014,12 +2017,24 @@ view_msg_cb (ModestMailOperation *mail_op,
        row_reference = (GtkTreeRowReference *) user_data;
        if (canceled) {
                gtk_tree_row_reference_free (row_reference);
+               self = (ModestMsgViewWindow *) modest_mail_operation_get_source (mail_op);
+               if (self) {
+                       /* Restore window title */
+                       update_window_title (self);
+                       g_object_unref (self);
+               }
                return;
        }
-       
+
        /* If there was any error */
        if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg)) {
-               gtk_tree_row_reference_free (row_reference);                    
+               gtk_tree_row_reference_free (row_reference);
+               self = (ModestMsgViewWindow *) modest_mail_operation_get_source (mail_op);
+               if (self) {
+                       /* Restore window title */
+                       update_window_title (self);
+                       g_object_unref (self);
+               }
                return;
        }
 
@@ -2955,7 +2970,7 @@ update_window_title (ModestMsgViewWindow *window)
        TnyMsg *msg = NULL;
        TnyHeader *header = NULL;
        gchar *subject = NULL;
-       
+
        msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
 
        if (msg != NULL) {
index a02e032..f64b9b1 100644 (file)
@@ -662,9 +662,9 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
 
        /* main window dimming rules */
        if (MODEST_IS_MAIN_WINDOW(win)) {
-               
+
                if (!dimmed) {
-                       dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
+                       dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
                        if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
                }
@@ -673,10 +673,18 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
                }
        /* msg view window dimming rules */
        } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
-               
-               /* Check dimmed rule */ 
+
+               /* This could happen if we load the msg view window with a
+                  preview before loading the full message */
+               TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+               if (!msg) {
+                       dimmed = TRUE;
+               } else {
+                       g_object_unref (msg);
+               }
+
                if (!dimmed) {
-                       dimmed = _transfer_mode_enabled (win);                  
+                       dimmed = _transfer_mode_enabled (win);
                        if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
                }
@@ -686,7 +694,7 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
                                modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
                }
        }
-       
+
        return dimmed;
 }
 
@@ -800,6 +808,15 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
                }
        } 
        else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+               /* This could happen if we load the msg view window with a
+                  preview before loading the full message */
+               TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+               if (!msg) {
+                       dimmed = TRUE;
+               } else {
+                       g_object_unref (msg);
+               }
+
                if (!dimmed) {
                        dimmed = state->any_marked_as_deleted;
                        if (dimmed) {
@@ -1118,7 +1135,7 @@ modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user
        return dimmed;
 }
 
-gboolean 
+gboolean
 modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user_data)
 {
        ModestDimmingRule *rule = NULL;
@@ -1128,8 +1145,18 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
 
-       /* Check dimmed rule */ 
-       dimmed = _transfer_mode_enabled (win);                  
+       /* This could happen if we load the msg view window with a
+          preview before loading the full message */
+       TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+       if (!msg) {
+               return TRUE;
+       } else {
+               g_object_unref (msg);
+       }
+
+       /* Check dimmed rule */
+
+       dimmed = _transfer_mode_enabled (win);
        if (dimmed)
                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
        if (!dimmed) {
@@ -1248,8 +1275,19 @@ modest_ui_dimming_rules_on_find_msg (ModestWindow *win, gpointer user_data)
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
 
+       /* This could happen if we load the msg view window with a
+          preview before loading the full message */
+       if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+               TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+               if (!msg) {
+                       return TRUE;
+               } else {
+                       g_object_unref (msg);
+               }
+       }
+
        /* Check dimmed rule */ 
-       dimmed = _transfer_mode_enabled (win);                  
+       dimmed = _transfer_mode_enabled (win);
        if (dimmed)
                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));