[evolution/wip/webkit2] EHTMLEditorView - Deleting a selection and undoing it will restore the selection wrongly



commit bd874d688bdae59ef195139740a2814c4ddc1952
Author: Tomas Popela <tpopela redhat com>
Date:   Wed Apr 22 11:09:23 2015 +0200

    EHTMLEditorView - Deleting a selection and undoing it will restore the selection wrongly

 web-extensions/e-html-editor-undo-redo-manager.c  |   13 +++++--------
 web-extensions/e-html-editor-view-dom-functions.c |    5 ++---
 2 files changed, 7 insertions(+), 11 deletions(-)
---
diff --git a/web-extensions/e-html-editor-undo-redo-manager.c 
b/web-extensions/e-html-editor-undo-redo-manager.c
index f4f51fd..d660509 100644
--- a/web-extensions/e-html-editor-undo-redo-manager.c
+++ b/web-extensions/e-html-editor-undo-redo-manager.c
@@ -302,7 +302,7 @@ undo_delete (WebKitDOMDocument *document,
                dom_selection_restore (document);
                dom_force_spell_check (document, extension);
        } else {
-               WebKitDOMNode *inserted_node, *nd;
+               WebKitDOMNode *nd;
 
                element = webkit_dom_document_create_element (document, "span", NULL);
 
@@ -331,7 +331,7 @@ undo_delete (WebKitDOMDocument *document,
                }
 
                /* Insert the deleted content back to the body. */
-               inserted_node = webkit_dom_node_insert_before (
+               webkit_dom_node_insert_before (
                        webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (element)),
                        fragment,
                        WEBKIT_DOM_NODE (element),
@@ -342,13 +342,10 @@ undo_delete (WebKitDOMDocument *document,
                /* If the selection markers are presented restore the selection,
                 * otherwise the selection was not callapsed so select the deleted
                 * content as it was before the delete occured. */
-               if (webkit_dom_document_fragment_query_selector (event->data.fragment, 
"span#-x-evo-selection-start-marker", NULL)) {
+               if (webkit_dom_document_fragment_query_selector (event->data.fragment, 
"span#-x-evo-selection-start-marker", NULL))
                        dom_selection_restore (document);
-               } else {
-                       webkit_dom_range_select_node (range, WEBKIT_DOM_NODE (inserted_node), NULL);
-                       webkit_dom_dom_selection_remove_all_ranges (dom_selection);
-                       webkit_dom_dom_selection_add_range (dom_selection, range);
-               }
+               else
+                       restore_selection_to_history_event_state (document, event->before);
 
                if (e_html_editor_web_extension_get_magic_smileys_enabled (extension))
                        dom_check_magic_smileys (document, extension);
diff --git a/web-extensions/e-html-editor-view-dom-functions.c 
b/web-extensions/e-html-editor-view-dom-functions.c
index c6c3c46..e85ea23 100644
--- a/web-extensions/e-html-editor-view-dom-functions.c
+++ b/web-extensions/e-html-editor-view-dom-functions.c
@@ -6651,7 +6651,6 @@ save_history_for_delete_or_backspace (WebKitDOMDocument *document,
        ev = g_new0 (EHTMLEditorHistoryEvent, 1);
        ev->type = HISTORY_DELETE;
 
-       range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
        dom_selection_get_coordinates (
                document, &ev->before.start.x, &ev->before.start.y, &ev->before.end.x, &ev->before.end.y);
        range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
@@ -6722,8 +6721,8 @@ save_history_for_delete_or_backspace (WebKitDOMDocument *document,
        } else {
                ev->after.start.x = ev->before.start.x;
                ev->after.start.y = ev->before.start.y;
-               ev->after.end.x = ev->before.end.x;
-               ev->after.end.y = ev->before.end.y;
+               ev->after.end.x = ev->before.start.x;
+               ev->after.end.y = ev->before.start.y;
                fragment = webkit_dom_range_clone_contents (range, NULL);
        }
 


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