* Fixes NB#98294, archive is now displayed in New folder dialog
[modest] / src / hildon2 / modest-msg-edit-window.c
index da939cd..f1cddac 100644 (file)
@@ -267,6 +267,7 @@ struct _ModestMsgEditWindowPrivate {
        GtkWidget   *font_dialog;
 
        GtkWidget   *pannable;
+       guint        correct_scroll_idle;
        guint        scroll_drag_timeout_id;
        gdouble      last_upper;
 
@@ -419,6 +420,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj)
        priv->sent = FALSE;
 
        priv->scroll_drag_timeout_id = 0;
+       priv->correct_scroll_idle = 0;
        priv->last_upper = 0.0;
 
        priv->font_dialog = NULL;
@@ -493,21 +495,19 @@ scroll_drag_timeout (gpointer userdata)
        return FALSE;
 }
 
-static void
-correct_scroll_without_drag_check (ModestMsgEditWindow *w, gboolean only_if_focused)
+static gboolean 
+correct_scroll_without_drag_check_idle (gpointer userdata)
 {
+       ModestMsgEditWindow *w = (ModestMsgEditWindow *) userdata;
        ModestMsgEditWindowPrivate *priv;
-       GtkTextMark *insert;
        GtkTextIter iter;
        GdkRectangle rectangle;
        gdouble new_value;
        gint offset;
+       GtkTextMark *insert;
 
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(w);
-
-       if (only_if_focused && !gtk_widget_is_focus (priv->msg_body))
-               return;
-
+       
        insert = gtk_text_buffer_get_insert (priv->text_buffer);
        gtk_text_buffer_get_iter_at_mark (priv->text_buffer, &iter, insert);
 
@@ -517,6 +517,27 @@ correct_scroll_without_drag_check (ModestMsgEditWindow *w, gboolean only_if_focu
        new_value = (offset + rectangle.y);
 
        hildon_pannable_area_jump_to (HILDON_PANNABLE_AREA (priv->pannable), -1, new_value);
+
+       priv->correct_scroll_idle = 0;
+       return FALSE;
+}
+
+static void
+correct_scroll_without_drag_check (ModestMsgEditWindow *w, gboolean only_if_focused)
+{
+       ModestMsgEditWindowPrivate *priv;
+
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(w);
+
+       if (only_if_focused && !gtk_widget_is_focus (priv->msg_body))
+               return;
+
+       if (priv->correct_scroll_idle > 0) {
+               return;
+       }
+
+       priv->correct_scroll_idle = g_idle_add ((GSourceFunc) correct_scroll_without_drag_check_idle,
+                                               (gpointer) w);
 }
 
 static void
@@ -773,20 +794,21 @@ init_window (ModestMsgEditWindow *obj)
        
        to_caption = modest_maemo_utils_create_captioned_with_size_type 
                (title_size_group, value_size_group,
-                _("mail_va_to"), priv->to_field,
+                _("mail_va_to"), FALSE, priv->to_field,
                 HILDON_SIZE_AUTO_HEIGHT | HILDON_SIZE_AUTO_WIDTH);
        priv->cc_caption = modest_maemo_utils_create_captioned_with_size_type 
                (title_size_group, value_size_group,
-                _("mail_va_cc"), priv->cc_field,
+                _("mail_va_cc"), FALSE, priv->cc_field,
                 HILDON_SIZE_AUTO_HEIGHT | HILDON_SIZE_AUTO_WIDTH);
        priv->bcc_caption = modest_maemo_utils_create_captioned_with_size_type
                (title_size_group, value_size_group,
-                _("mail_va_hotfix1"), priv->bcc_field,
+                _("mail_va_hotfix1"), FALSE, priv->bcc_field,
                 HILDON_SIZE_AUTO_HEIGHT | HILDON_SIZE_AUTO_WIDTH);
        subject_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
-                                                              _("mail_va_subject"), subject_box);
+                                                              _("mail_va_subject"), FALSE, subject_box);
        priv->attachments_caption = modest_maemo_utils_create_captioned_with_size_type (title_size_group, value_size_group,
                                                                                        _("mail_va_attachment"), 
+                                                                                       FALSE,
                                                                                        priv->attachments_view,
                                                                                        HILDON_SIZE_AUTO_WIDTH |
                                                                                        HILDON_SIZE_AUTO_HEIGHT);
@@ -912,6 +934,10 @@ modest_msg_edit_window_finalize (GObject *obj)
                g_object_unref (priv->outbox_msg);
                priv->outbox_msg = NULL;
        }
+       if (priv->correct_scroll_idle > 0) {
+               g_source_remove (priv->correct_scroll_idle);
+               priv->correct_scroll_idle = 0;
+       }
        if (priv->scroll_drag_timeout_id > 0) {
                g_source_remove (priv->scroll_drag_timeout_id);
                priv->scroll_drag_timeout_id = 0;
@@ -3727,7 +3753,7 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window)
        gtk_box_pack_start (GTK_BOX (priority_hbox), high_toggle, TRUE, TRUE, 0);
        gtk_widget_show_all (priority_hbox);
        captioned = modest_maemo_utils_create_captioned (title_sizegroup, value_sizegroup,
-                                                        _("mcen_me_editor_message_priority"), priority_hbox);
+                                                        _("mcen_me_editor_message_priority"), FALSE, priority_hbox);
        gtk_widget_show (captioned);
        gtk_box_pack_start (GTK_BOX (vbox), captioned, FALSE, FALSE, 0);
 
@@ -3747,7 +3773,7 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window)
        gtk_box_pack_start (GTK_BOX (format_hbox), text_toggle, TRUE, TRUE, 0);
        gtk_widget_show_all (format_hbox);
        captioned = modest_maemo_utils_create_captioned (title_sizegroup, value_sizegroup,
-                                                        _("mcen_me_editor_format"), format_hbox);
+                                                        _("mcen_me_editor_format"), FALSE, format_hbox);
        gtk_widget_show (captioned);
        gtk_box_pack_start (GTK_BOX (vbox), captioned, FALSE, FALSE, 0);