* src/maemo/modest-msg-edit-window.c:
[modest] / src / maemo / modest-msg-edit-window.c
index eed1877..efbc641 100644 (file)
@@ -272,6 +272,7 @@ struct _ModestMsgEditWindowPrivate {
 
        GtkWidget   *scroll;
        guint        scroll_drag_timeout_id;
+       gdouble      last_upper;
 
        gint last_cid;
        TnyList *attachments;
@@ -437,6 +438,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj)
        priv->sent = FALSE;
 
        priv->scroll_drag_timeout_id = 0;
+       priv->last_upper = 0.0;
 
        modest_window_mgr_register_help_id (modest_runtime_get_window_mgr(),
                                            GTK_WINDOW(obj),"applications_email_editor");
@@ -526,6 +528,9 @@ correct_scroll_without_drag_check (ModestMsgEditWindow *w)
 
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(w);
 
+       if (!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);
 
@@ -601,7 +606,14 @@ text_buffer_mark_set (GtkTextBuffer *buffer,
 void vadj_changed (GtkAdjustment *adj,
                   ModestMsgEditWindow *window)
 {
-       correct_scroll (window);
+       ModestMsgEditWindowPrivate *priv;
+
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+       if (priv->last_upper != adj->upper) {
+               priv->last_upper = adj->upper;
+               correct_scroll (window);
+       }
 }
 
 static void
@@ -996,6 +1008,7 @@ replace_with_images (ModestMsgEditWindow *self, TnyList *attachments)
                }
                g_object_unref (part);
        }
+       g_object_unref (iter);
 }
 
 static void
@@ -1073,6 +1086,7 @@ update_last_cid (ModestMsgEditWindow *self, TnyList *attachments)
                }
                g_object_unref (part);
        }
+       g_object_unref (iter);
 }
 
 static void
@@ -1472,6 +1486,7 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre
        g_object_unref (toolbar_rules_group);
        g_object_unref (clipboard_rules_group);
        gtk_widget_show_all (GTK_WIDGET (obj));
+       modest_msg_edit_window_clipboard_owner_change (NULL, NULL, MODEST_MSG_EDIT_WINDOW (obj));
 
        set_msg (MODEST_MSG_EDIT_WINDOW (obj), msg, preserve_is_rich);
 
@@ -1616,6 +1631,7 @@ modest_msg_edit_window_get_msg_data (ModestMsgEditWindow *edit_window)
                g_object_unref (part);
                tny_iterator_next (att_iter);
        }
+       g_object_unref (att_iter);
        
        data->priority_flags = priv->priority_flags;
 
@@ -2184,14 +2200,16 @@ modest_msg_edit_window_attach_file_one (
                ModestMsgEditWindow *window,
                const gchar *uri)
 {
+       GnomeVFSHandle *handle = NULL;
+       ModestMsgEditWindowPrivate *priv;
+       GnomeVFSResult result;
+
        g_return_if_fail (window);
        g_return_if_fail (uri);
                
-       ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
-       
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        
-       GnomeVFSHandle *handle = NULL;
-       GnomeVFSResult result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ);
+       result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ);
        if (result == GNOME_VFS_OK) {
                TnyMimePart *mime_part;
                TnyStream *stream;
@@ -2324,6 +2342,7 @@ modest_msg_edit_window_remove_attachments (ModestMsgEditWindow *window,
                        gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
                        g_object_unref (mime_part);
                }
+               g_object_unref (iter);
        }
 
        g_object_unref (att_list);