[evolution] Save selection in save_history_for_delete_or_backspace()



commit 309214dc8c895097b771a58577d7f6ea9035cae6
Author: Tomas Popela <tpopela redhat com>
Date:   Mon Sep 5 14:36:54 2016 +0200

    Save selection in save_history_for_delete_or_backspace()
    
    and don't rely that it was saved in the caller (there indeed could be a case
    when it did not happened).

 .../web-extension/e-editor-dom-functions.c         |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/modules/webkit-editor/web-extension/e-editor-dom-functions.c 
b/modules/webkit-editor/web-extension/e-editor-dom-functions.c
index 421f683..1d8bfde 100644
--- a/modules/webkit-editor/web-extension/e-editor-dom-functions.c
+++ b/modules/webkit-editor/web-extension/e-editor-dom-functions.c
@@ -8891,6 +8891,8 @@ save_history_for_delete_or_backspace (EEditorPage *editor_page,
        ev = g_new0 (EEditorHistoryEvent, 1);
        ev->type = HISTORY_DELETE;
 
+       e_editor_dom_selection_save (editor_page);
+
        e_editor_dom_selection_get_coordinates (editor_page, &ev->before.start.x, &ev->before.start.y, 
&ev->before.end.x, &ev->before.end.y);
        g_clear_object (&range);
        range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
@@ -9331,9 +9333,12 @@ e_editor_dom_fix_structure_after_delete_before_quoted_content (EEditorPage *edit
                if (node && !WEBKIT_DOM_IS_HTML_BR_ELEMENT (node))
                        goto restore;
                else {
-                       if (key_code != ~0)
+                       if (key_code != ~0) {
+                               e_editor_dom_selection_restore (editor_page);
                                save_history_for_delete_or_backspace (
                                        editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
+                               e_editor_dom_selection_save (editor_page);
+                       }
 
                        /* Remove the empty block and move caret to the right place. */
                        remove_node (block);
@@ -9415,12 +9420,12 @@ e_editor_dom_fix_structure_after_delete_before_quoted_content (EEditorPage *edit
        }
 
  restore:
+       e_editor_dom_selection_restore (editor_page);
+
        if (key_code != ~0)
                save_history_for_delete_or_backspace (
                        editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
 
-       e_editor_dom_selection_restore (editor_page);
-
        return FALSE;
 }
 
@@ -9688,9 +9693,12 @@ e_editor_dom_delete_last_character_on_line_in_quoted_block (EEditorPage *editor_
        if (!webkit_dom_node_get_previous_sibling (beginning))
                goto out;
 
-       if (key_code != ~0)
+       if (key_code != ~0) {
+               e_editor_dom_selection_restore (editor_page);
                save_history_for_delete_or_backspace (
                        editor_page, key_code == HTML_KEY_CODE_DELETE, control_key);
+               e_editor_dom_selection_save (editor_page);
+       }
 
        element = webkit_dom_node_get_parent_element (beginning);
        remove_node (WEBKIT_DOM_NODE (element));


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