2007-08-15 Murray Cumming <murrayc@murrayc.com>
[modest] / src / modest-ui-dimming-rules.c
index 07acbde..b5eb830 100644 (file)
@@ -76,6 +76,7 @@ static DimmedState *
 _define_main_window_dimming_state (ModestMainWindow *window)
 {
        DimmedState *state = NULL;
+       GtkWidget *focused_widget = NULL;
        GtkWidget *header_view = NULL;
        TnyList *selected_headers = NULL;
        TnyIterator *iter = NULL;
@@ -109,8 +110,18 @@ _define_main_window_dimming_state (ModestMainWindow *window)
        state->all_has_attachments = FALSE;
        state->sent_in_progress = FALSE;
 
+       /* Get focused widget */
+       focused_widget = gtk_window_get_focus (GTK_WINDOW (window));
+       if (MODEST_IS_FOLDER_VIEW (focused_widget)) {
+               state->n_selected++;
+               return state;
+       } else if (MODEST_IS_HEADER_VIEW (focused_widget)) {
+               header_view = focused_widget;           
+       } else {
+               header_view = modest_main_window_get_child_widget (window, MODEST_WIDGET_TYPE_HEADER_VIEW);
+       }
+       
        /* Get header view and selected headers */
-       header_view = modest_main_window_get_child_widget (window, MODEST_WIDGET_TYPE_HEADER_VIEW);
        selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
        if (!selected_headers) 
                return state;
@@ -305,8 +316,7 @@ modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data)
                
        /* Check dimmed rule */ 
        if (!dimmed) {
-               if (MODEST_IS_MSG_VIEW_WINDOW (win))
-                       dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
+               dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
                if (dimmed)
                        modest_dimming_rule_set_notification (rule, "");
        }
@@ -611,8 +621,7 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
                                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
                }
                if (!dimmed) {
-                       if (MODEST_IS_MSG_VIEW_WINDOW (win))
-                               dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW (win));
+                       dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW (win));
                        if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
                }
@@ -1172,18 +1181,23 @@ modest_ui_dimming_rules_on_cut (ModestWindow *win, gpointer user_data)
 
        /* Check window specific dimming rules */
        if (MODEST_IS_MAIN_WINDOW (win)) {
-               if (!dimmed) { 
-                       dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
-                       if (dimmed)
-                               modest_dimming_rule_set_notification (rule, "");
-               }
-               if (!dimmed) {
-                       dimmed = _selected_msg_sent_in_progress (win);
-                       if (dimmed)
+               /* Get focused widget */
+               GtkWidget *focused = gtk_window_get_focus (GTK_WINDOW (win));
+               
+               if (MODEST_IS_HEADER_VIEW (focused)) {
+                       if (!dimmed) { 
+                               dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
+                               if (dimmed)
+                                       modest_dimming_rule_set_notification (rule, "");
+                       }
+                       if (!dimmed) {
+                               dimmed = _selected_msg_sent_in_progress (win);
+                               if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_cut_mess"));
+                       }
                }
        }
-       
+
        return dimmed;
 }
 
@@ -1203,15 +1217,20 @@ modest_ui_dimming_rules_on_copy (ModestWindow *win, gpointer user_data)
        
        /* Check window specific dimming rules */
        if (MODEST_IS_MAIN_WINDOW (win)) {
-               if (!dimmed) {
-                       dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
-                       if (dimmed)
-                               modest_dimming_rule_set_notification (rule, "");
-               }               
-               if (!dimmed) {
-                       dimmed = _selected_msg_sent_in_progress (win);
-                       if (dimmed)
-                               modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_cut_mess"));
+               /* Get focused widget */
+               GtkWidget *focused = gtk_window_get_focus (GTK_WINDOW (win));
+               
+               if (MODEST_IS_HEADER_VIEW (focused)) {
+                       if (!dimmed) {
+                               dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
+                               if (dimmed)
+                                       modest_dimming_rule_set_notification (rule, "");
+                       }               
+                       if (!dimmed) {
+                               dimmed = _selected_msg_sent_in_progress (win);
+                               if (dimmed)
+                                       modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_cut_mess"));
+                       }
                }
        }
                
@@ -1229,17 +1248,18 @@ modest_ui_dimming_rules_on_view_previous (ModestWindow *win, gpointer user_data)
 
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE);
 
-       /* Check dimmed rule */ 
+       /* Check dimmed rule */
        if (!dimmed) {
-               dimmed = _transfer_mode_enabled (win);                  
+               dimmed = _transfer_mode_enabled (win);
                if (dimmed)
-                       modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
+                       modest_dimming_rule_set_notification (
+                                       rule, _("mail_ib_notavailable_downloading"));
        }
        if (!dimmed) {
-               if (MODEST_IS_MSG_VIEW_WINDOW (win))
-                       dimmed = modest_msg_view_window_first_message_selected (MODEST_MSG_VIEW_WINDOW(win));
+               dimmed = modest_msg_view_window_first_message_selected (
+                               MODEST_MSG_VIEW_WINDOW(win));
                modest_dimming_rule_set_notification (rule, NULL);
-       }               
+       }
 
        return dimmed;
 }
@@ -1261,8 +1281,7 @@ modest_ui_dimming_rules_on_view_next (ModestWindow *win, gpointer user_data)
                        modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
        }
        if (!dimmed) {
-               if (MODEST_IS_MSG_VIEW_WINDOW (win))
-                       dimmed = modest_msg_view_window_last_message_selected (MODEST_MSG_VIEW_WINDOW (win));
+               dimmed = modest_msg_view_window_last_message_selected (MODEST_MSG_VIEW_WINDOW (win));
                modest_dimming_rule_set_notification (rule, NULL);
        }