2007-08-15 Murray Cumming <murrayc@murrayc.com>
[modest] / src / modest-ui-dimming-rules.c
index edf41c2..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;
@@ -1170,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;
 }
 
@@ -1201,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"));
+                       }
                }
        }