Do ignore empty recipients when checking names
[modest] / src / modest-ui-dimming-rules.c
index b15b59e..71fa5dd 100644 (file)
@@ -1193,14 +1193,34 @@ modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user
 static gboolean
 _forbid_outgoing_xfers (ModestWindow *window)
 {
-       const gchar *account_name;
-       TnyAccount *account;
+       const gchar *account_name = NULL;
+       TnyAccount *account = NULL;
        gboolean dimmed = FALSE;
 
-       account_name = modest_window_get_active_account (window);
-       account = modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
-                                                              account_name,
-                                                              TNY_ACCOUNT_TYPE_STORE);
+#ifdef MODEST_TOOLKIT_HILDON2
+       /* We cannot just get the active account because the active
+          account of a header window that shows the headers of a
+          local account is the ID of the remote account */
+       if (MODEST_IS_HEADER_WINDOW (window)) {
+               ModestHeaderView *header_view;
+               TnyFolder *folder;
+
+               header_view = modest_header_window_get_header_view ((ModestHeaderWindow *) window);
+               folder = modest_header_view_get_folder (header_view);
+
+               if (folder) {
+                       account = modest_tny_folder_get_account (folder);
+                       g_object_unref (folder);
+               }
+       }
+#endif
+
+       if (!account) {
+               account_name = modest_window_get_active_account (window);
+               account = modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
+                                                                      account_name,
+                                                                      TNY_ACCOUNT_TYPE_STORE);
+       }
 
        if (account) {
                ModestProtocolType protocol_type;
@@ -2073,7 +2093,7 @@ modest_ui_dimming_rules_on_send_receive_all (ModestWindow *win, gpointer user_da
 gboolean
 modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_data)
 {
-       GSList *recipients;
+       GSList *recipients = NULL;
        gboolean has_recipients_to_add;
 
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
@@ -2098,19 +2118,8 @@ modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_dat
                        g_object_unref (msg);
                }
        } else if (MODEST_IS_MSG_EDIT_WINDOW (win)) {
-               /* Get recipients */
-               gchar *joined, *after_remove;
-               MsgData *data = modest_msg_edit_window_get_msg_data ((ModestMsgEditWindow *) win);
-
-               /* We don't check the from */
-               joined = modest_text_utils_join_addresses (NULL, data->to, data->cc, data->bcc);
-               after_remove = modest_text_utils_remove_duplicate_addresses (joined);
-               g_free (joined);
-
-               recipients = modest_text_utils_split_addresses_list (after_remove);
-               g_free (after_remove);
-
-               modest_msg_edit_window_free_msg_data ((ModestMsgEditWindow *) win, data);
+               /* Check if there are pending addresses to add */
+               return !modest_msg_edit_window_has_pending_addresses ((ModestMsgEditWindow *) win);
        }
 
        has_recipients_to_add = FALSE;