Changes to speed up opening messages in view and editor
authorJose Dapena Paz <jdapena@igalia.com>
Mon, 17 Dec 2007 12:38:22 +0000 (12:38 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Mon, 17 Dec 2007 12:38:22 +0000 (12:38 +0000)
* src/maemo/modest-msg-edit-window.c:
        * Do the show all of edit window construction to make it
          feel a bit faster.
* src/maemo/modest-msg-view-window.c:
        * Show all early to feel faster.
        * Dimming rules should be evaluated after being visible, not
          before.
* src/modest-ui-dimming-rules.c:
        * Make clipboard checks for GtkHtml be avoided when the
          selection is empty.

pmo-trunk-r3931

src/maemo/modest-msg-edit-window.c
src/maemo/modest-msg-view-window.c
src/modest-mail-operation.c
src/modest-ui-actions.c
src/modest-ui-dimming-rules.c

index 3b0a566..6edffce 100644 (file)
@@ -1343,6 +1343,7 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre
        g_object_unref (menu_rules_group);
        g_object_unref (toolbar_rules_group);
        g_object_unref (clipboard_rules_group);
        g_object_unref (menu_rules_group);
        g_object_unref (toolbar_rules_group);
        g_object_unref (clipboard_rules_group);
+       gtk_widget_show_all (GTK_WIDGET (obj));
 
        set_msg (MODEST_MSG_EDIT_WINDOW (obj), msg, preserve_is_rich);
 
 
        set_msg (MODEST_MSG_EDIT_WINDOW (obj), msg, preserve_is_rich);
 
index 82f587e..cdabd3a 100644 (file)
@@ -824,11 +824,9 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self,
        /* Init the clipboard actions dim status */
        modest_msg_view_grab_focus(MODEST_MSG_VIEW (priv->msg_view));
 
        /* Init the clipboard actions dim status */
        modest_msg_view_grab_focus(MODEST_MSG_VIEW (priv->msg_view));
 
+       gtk_widget_show_all (GTK_WIDGET (obj));
        update_window_title (MODEST_MSG_VIEW_WINDOW (obj));
 
        update_window_title (MODEST_MSG_VIEW_WINDOW (obj));
 
-       /* Check toolbar dimming rules */
-       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (obj));
-       modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), "ModestClipboardDimmingRules");
 
 }
 
 
 }
 
@@ -909,11 +907,11 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg,
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
        update_window_title (MODEST_MSG_VIEW_WINDOW (window));
        gtk_widget_show_all (GTK_WIDGET (window));
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
        update_window_title (MODEST_MSG_VIEW_WINDOW (window));
        gtk_widget_show_all (GTK_WIDGET (window));
-
        modest_msg_view_window_update_priority (window);
 
        /* Check toolbar dimming rules */
        modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
        modest_msg_view_window_update_priority (window);
 
        /* Check toolbar dimming rules */
        modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules");
 
        return MODEST_WINDOW(window);
 }
 
        return MODEST_WINDOW(window);
 }
@@ -943,6 +941,7 @@ modest_msg_view_window_new_for_search_result (TnyMsg *msg,
        update_window_title (window);
        modest_msg_view_window_update_priority (window);
 
        update_window_title (window);
        modest_msg_view_window_update_priority (window);
 
+
        return MODEST_WINDOW(window);
 }
 
        return MODEST_WINDOW(window);
 }
 
@@ -965,6 +964,10 @@ modest_msg_view_window_new_for_attachment (TnyMsg *msg,
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
        update_window_title (MODEST_MSG_VIEW_WINDOW (obj));
 
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
        update_window_title (MODEST_MSG_VIEW_WINDOW (obj));
 
+       /* Check toolbar dimming rules */
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (obj));
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), "ModestClipboardDimmingRules");
+
        return MODEST_WINDOW(obj);
 }
 
        return MODEST_WINDOW(obj);
 }
 
index c479fca..ae6f9ae 100644 (file)
@@ -2229,7 +2229,7 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self,
        TnyIterator *iter = NULL;
        
        g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
        TnyIterator *iter = NULL;
        
        g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
-       
+
        /* Init mail operation */
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
        priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
        /* Init mail operation */
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
        priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
@@ -2333,6 +2333,7 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self,
                if (notify)
                        notify (user_data);
        }
                if (notify)
                        notify (user_data);
        }
+
 }
 
 
 }
 
 
index 9f54530..8d9161f 100644 (file)
@@ -1979,7 +1979,7 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view,
        TnyList *headers;
 
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
        TnyList *headers;
 
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-       
+
        if (!header)
                return;
 
        if (!header)
                return;
 
index 2da7655..3547a0a 100644 (file)
@@ -41,6 +41,7 @@
 #include <modest-runtime.h>
 #include <tny-simple-list.h>
 #include <widgets/modest-recpt-editor.h>
 #include <modest-runtime.h>
 #include <tny-simple-list.h>
 #include <widgets/modest-recpt-editor.h>
+#include <gtkhtml/gtkhtml.h>
 
 
 static gboolean _folder_is_any_of_type (TnyFolder *folder, TnyFolderType types[], guint ntypes);
 
 
 static gboolean _folder_is_any_of_type (TnyFolder *folder, TnyFolderType types[], guint ntypes);
@@ -1367,7 +1368,7 @@ modest_ui_dimming_rules_on_copy (ModestWindow *win, gpointer user_data)
        ModestDimmingRule *rule = NULL;
        const DimmedState *state = NULL;
        gboolean dimmed = FALSE;
        ModestDimmingRule *rule = NULL;
        const DimmedState *state = NULL;
        gboolean dimmed = FALSE;
-       
+
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
        state = modest_window_get_dimming_state (win);
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
        state = modest_window_get_dimming_state (win);
@@ -1803,8 +1804,20 @@ modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_dat
                                g_utf8_strncpy (selection, start_offset, end - start);
                        }
                } else {
                                g_utf8_strncpy (selection, start_offset, end - start);
                        }
                } else {
-                       GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
-                       selection = gtk_clipboard_wait_for_text (clipboard);
+                       gboolean do_check = TRUE;
+                       GtkClipboard *clipboard;
+                       if (GTK_IS_HTML (focused)) {
+                               const gchar *sel;
+                               guint len = -1;
+                               sel = gtk_html_get_selection_html (GTK_HTML (focused), &len);
+                               do_check = !((sel == NULL) || (sel[0] == '\0'));
+                       }
+                       if (do_check) {
+                               clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
+                               selection = gtk_clipboard_wait_for_text (clipboard);
+                       } else {
+                               selection = NULL;
+                       }
                }
                dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection, NULL)));
        }
                }
                dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection, NULL)));
        }
@@ -2290,6 +2303,7 @@ _invalid_clipboard_selected (ModestWindow *win,
                result = !has_selection;
        } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
                if (focused) {
                result = !has_selection;
        } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
                if (focused) {
+                       g_message ("FOCUSED %s", g_type_name (G_TYPE_FROM_INSTANCE (focused)));
                        if (GTK_IS_LABEL (focused) && 
                            !gtk_label_get_selection_bounds (GTK_LABEL (focused), NULL, NULL)) {
                                result = TRUE;
                        if (GTK_IS_LABEL (focused) && 
                            !gtk_label_get_selection_bounds (GTK_LABEL (focused), NULL, NULL)) {
                                result = TRUE;
@@ -2297,9 +2311,14 @@ _invalid_clipboard_selected (ModestWindow *win,
                                GtkTextBuffer *buffer;
                                buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused));
                                result = !gtk_text_buffer_get_has_selection (buffer);
                                GtkTextBuffer *buffer;
                                buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused));
                                result = !gtk_text_buffer_get_has_selection (buffer);
+                       } else if (GTK_IS_HTML (focused)) {
+                               const gchar *sel;
+                               guint len = -1;
+                               sel = gtk_html_get_selection_html (GTK_HTML (focused), &len);
+                               result = ((sel == NULL) || (sel[0] == '\0'));
                        } else if (!MODEST_IS_ATTACHMENTS_VIEW (focused)) {
                        } else if (!MODEST_IS_ATTACHMENTS_VIEW (focused)) {
-                               GtkClipboard *clipboard = NULL;
-                               gchar *selection = NULL;
+                               GtkClipboard *clipboard;
+                               gchar *selection;
 
                                clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
                                /* Get clipboard selection*/
 
                                clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
                                /* Get clipboard selection*/