X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-dimming-rules.c;h=da4a6712bbd0b707143ec868bc8d0d9869cd68cd;hp=788e90aaf86f845e88cdc270455b297f9ec1ca63;hb=dbbefa965fe138f1ec092c128c5a49259573abf4;hpb=26ec0e30d7a635024b2edfff1bac2b4ebf2b0757 diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 788e90a..da4a671 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -840,6 +840,13 @@ modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) if (dimmed) modest_dimming_rule_set_notification (rule, ""); } + if (!dimmed) { + if (!modest_msg_view_window_is_search_result (MODEST_MSG_VIEW_WINDOW(win))) { + dimmed = !modest_msg_view_window_has_headers_model (MODEST_MSG_VIEW_WINDOW (win)); + } + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } } return dimmed; @@ -1004,7 +1011,7 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user if (!dimmed) { dimmed = _selected_msg_sent_in_progress (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_move_mail_attachment")); + modest_dimming_rule_set_notification (rule, _("emev_nc_unabletomove_item")); } if (!dimmed) { if (MODEST_IS_MSG_VIEW_WINDOW (win)) { @@ -1018,7 +1025,7 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user } if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_move_mail_attachment")); + modest_dimming_rule_set_notification (rule, _("emev_nc_unabletomove_item")); } return dimmed; @@ -1091,12 +1098,12 @@ modest_ui_dimming_rules_on_paste (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = _selected_folder_is_same_as_source (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_copy_samefolder")); + modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_copy_target_error")); } if (!dimmed) { dimmed = _selected_folder_has_subfolder_with_same_name (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_copy_samefolder")); + modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_copy_target_error")); } return dimmed; @@ -1761,16 +1768,36 @@ modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_dat { ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; + GtkWidget *focused = NULL; g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); rule = MODEST_DIMMING_RULE (user_data); + focused = gtk_window_get_focus (GTK_WINDOW (win)); + + dimmed = !focused; - /* Check dimmed rule */ if (!dimmed) { - GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); gchar *selection = NULL; - selection = gtk_clipboard_wait_for_text (clipboard); - + if (GTK_IS_TEXT_VIEW (focused)) { + GtkTextIter start, end; + GtkTextBuffer *buffer = NULL; + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused)); + if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end)) { + selection = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + } + } else if (GTK_IS_LABEL (focused)) { + gint start, end; + if (gtk_label_get_selection_bounds (GTK_LABEL (focused), &start, &end)) { + const gchar *start_offset; + start_offset = gtk_label_get_text (GTK_LABEL (focused)); + start_offset = g_utf8_offset_to_pointer (start_offset, start); + selection = g_new0 (gchar, end - start + 1); + g_utf8_strncpy (selection, start_offset, end - start); + } + } else { + GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); + selection = gtk_clipboard_wait_for_text (clipboard); + } dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection, NULL))); } @@ -2255,22 +2282,32 @@ _invalid_clipboard_selected (ModestWindow *win, } result = !has_selection; } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) { - GtkClipboard *clipboard = NULL; - gchar *selection = NULL; - - /* Get clipboard selection*/ - clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); - selection = gtk_clipboard_wait_for_text (clipboard); - - /* Check dimming */ - result = ((selection == NULL) || - (MODEST_IS_ATTACHMENTS_VIEW (focused))); + if (focused) { + if (GTK_IS_LABEL (focused) && + !gtk_label_get_selection_bounds (GTK_LABEL (focused), NULL, NULL)) { + result = TRUE; + } else if (GTK_IS_TEXT_VIEW (focused)) { + GtkTextBuffer *buffer; + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused)); + result = !gtk_text_buffer_get_has_selection (buffer); + } else if (!MODEST_IS_ATTACHMENTS_VIEW (focused)) { + GtkClipboard *clipboard = NULL; + gchar *selection = NULL; + + clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); + /* Get clipboard selection*/ + selection = gtk_clipboard_wait_for_text (clipboard); + /* Check dimming */ + result = (selection == NULL); + g_free (selection); + } + } else { + result = TRUE; + } if (result) modest_dimming_rule_set_notification (rule, ""); - if (selection != NULL) - g_free(selection); } else if (MODEST_IS_MAIN_WINDOW (win)) { /* Check dimming */