[evolution/gnome-3-16] Composer - Extra new line added on the end of reply



commit b5e2ae26de1db6a8050a8abb3c32941a6bfa1b5f
Author: Tomas Popela <tpopela redhat com>
Date:   Wed Apr 8 16:16:57 2015 +0200

    Composer - Extra new line added on the end of reply
    
    When replying on message there is an extra empty line added on the end of the original
    text. It gets there while parsing the original message as the trailing CRLF is not
    removed. The proper fix would be to delete the trailing CRLF, but it is safer
    to just mark it in editor to remove the trailing new line later.

 composer/e-msg-composer.c        |    5 ++++-
 e-util/e-html-editor-view.c      |   17 ++++++++++-------
 e-util/e-html-editor-view.h      |    6 +++---
 e-util/e-mail-signature-editor.c |    2 --
 4 files changed, 17 insertions(+), 13 deletions(-)
---
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 94ccfb2..a0077ce 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -2732,9 +2732,13 @@ e_msg_composer_class_init (EMsgComposerClass *class)
 static void
 e_msg_composer_init (EMsgComposer *composer)
 {
+       EHTMLEditorView *view;
+
        composer->priv = E_MSG_COMPOSER_GET_PRIVATE (composer);
 
        composer->priv->editor = g_object_ref_sink (e_html_editor_new ());
+       view = e_html_editor_get_view (composer->priv->editor);
+       e_html_editor_view_set_is_editting_message (view, TRUE);
 }
 
 /**
@@ -4596,7 +4600,6 @@ e_msg_composer_set_body (EMsgComposer *composer,
        set_editor_text (composer, content, TRUE, FALSE);
 
        e_html_editor_view_set_html_mode (view, FALSE);
-       e_html_editor_view_set_remove_initial_input_line (view, TRUE);
        webkit_web_view_set_editable (WEBKIT_WEB_VIEW (view), FALSE);
 
        g_free (priv->mime_body);
diff --git a/e-util/e-html-editor-view.c b/e-util/e-html-editor-view.c
index 57b6414..92d6eb6 100644
--- a/e-util/e-html-editor-view.c
+++ b/e-util/e-html-editor-view.c
@@ -94,10 +94,10 @@ struct _EHTMLEditorViewPrivate {
 
        gboolean convert_in_situ;
        gboolean body_input_event_removed;
+       gboolean is_editting_message;
        gboolean is_message_from_draft;
        gboolean is_message_from_edit_as_new;
        gboolean is_message_from_selection;
-       gboolean remove_initial_input_line;
        gboolean return_key_pressed;
        gboolean space_key_pressed;
        gboolean smiley_written;
@@ -6201,7 +6201,7 @@ parse_html_into_paragraphs (EHTMLEditorView *view,
                                        element_add_class (
                                                WEBKIT_DOM_ELEMENT (child),
                                                "-x-evo-last-br");
-                               } else
+                               } else if (!view->priv->is_editting_message)
                                        create_and_append_new_paragraph (
                                                selection, document, blockquote, block, "<br>");
                        } else
@@ -6676,7 +6676,10 @@ html_editor_convert_view_content (EHTMLEditorView *view,
                remove_node (WEBKIT_DOM_NODE (content_wrapper));
        }
 
-       if (view->priv->is_message_from_edit_as_new || view->priv->remove_initial_input_line || 
!start_bottom) {
+       /* If not editting a message, don't add any new block and just place
+        * the carret in the beginning of content. We want to have the same
+        * behaviour when editting message as new or we start replying on top. */
+       if (!view->priv->is_editting_message || view->priv->is_message_from_edit_as_new || !start_bottom) {
                WebKitDOMNode *child;
 
                remove_node (WEBKIT_DOM_NODE (paragraph));
@@ -9500,10 +9503,10 @@ e_html_editor_view_init (EHTMLEditorView *view)
        e_html_editor_view_update_fonts (view);
 
        view->priv->body_input_event_removed = TRUE;
+       view->priv->is_editting_message = FALSE;
        view->priv->is_message_from_draft = FALSE;
        view->priv->is_message_from_selection = FALSE;
        view->priv->is_message_from_edit_as_new = FALSE;
-       view->priv->remove_initial_input_line = FALSE;
        view->priv->convert_in_situ = FALSE;
        view->priv->return_key_pressed = FALSE;
        view->priv->space_key_pressed = FALSE;
@@ -10664,12 +10667,12 @@ e_html_editor_view_set_is_message_from_edit_as_new (EHTMLEditorView *view,
 }
 
 void
-e_html_editor_view_set_remove_initial_input_line (EHTMLEditorView *view,
-                                                  gboolean value)
+e_html_editor_view_set_is_editting_message (EHTMLEditorView *view,
+                                            gboolean value)
 {
        g_return_if_fail (E_IS_HTML_EDITOR_VIEW (view));
 
-       view->priv->remove_initial_input_line = value;
+       view->priv->is_editting_message = value;
 }
 
 gboolean
diff --git a/e-util/e-html-editor-view.h b/e-util/e-html-editor-view.h
index fbb7dd1..ccca267 100644
--- a/e-util/e-html-editor-view.h
+++ b/e-util/e-html-editor-view.h
@@ -257,6 +257,9 @@ void                remove_image_attributes_from_element
                                                (WebKitDOMElement *element);
 gboolean       e_html_editor_view_is_message_from_draft
                                                (EHTMLEditorView *view);
+void           e_html_editor_view_set_is_editting_message
+                                               (EHTMLEditorView *view,
+                                                gboolean value);
 void           e_html_editor_view_set_is_message_from_draft
                                                (EHTMLEditorView *view,
                                                 gboolean value);
@@ -268,9 +271,6 @@ gboolean    e_html_editor_view_is_message_from_edit_as_new
 void           e_html_editor_view_set_is_message_from_edit_as_new
                                                (EHTMLEditorView *view,
                                                 gboolean value);
-void           e_html_editor_view_set_remove_initial_input_line
-                                               (EHTMLEditorView *view,
-                                                gboolean value);
 void           e_html_editor_view_insert_quoted_text
                                                (EHTMLEditorView *view,
                                                 const gchar *text);
diff --git a/e-util/e-mail-signature-editor.c b/e-util/e-mail-signature-editor.c
index 47ca66d..1520a6c 100644
--- a/e-util/e-mail-signature-editor.c
+++ b/e-util/e-mail-signature-editor.c
@@ -499,8 +499,6 @@ mail_signature_editor_constructed (GObject *object)
        editor = e_mail_signature_editor_get_editor (window);
        view = e_html_editor_get_view (editor);
 
-       e_html_editor_view_set_remove_initial_input_line (view, TRUE);
-
        ui_manager = e_html_editor_get_ui_manager (editor);
 
        /* Because we are loading from a hard-coded string, there is


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]