[evolution/wip/mcrha/webkit-jsc-api] e-undo-redo.js: Extend stored data on deletion events



commit 2978da006e977869ed9104d84a21415bd41cd5f9
Author: Milan Crha <mcrha redhat com>
Date:   Thu Nov 7 12:40:15 2019 +0100

    e-undo-redo.js: Extend stored data on deletion events

 data/webkit/e-editor.js    |  5 ++++-
 data/webkit/e-undo-redo.js | 53 ++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 55 insertions(+), 3 deletions(-)
---
diff --git a/data/webkit/e-editor.js b/data/webkit/e-editor.js
index c042325b65..94157534fa 100644
--- a/data/webkit/e-editor.js
+++ b/data/webkit/e-editor.js
@@ -468,7 +468,10 @@ EvoEditor.ClaimAffectedContent = function(startNode, endNode, flags)
        }
 
        if (!endNode) {
-               endNode = startNode;
+               endNode = document.getSelection().extentNode;
+
+               if (!endNode)
+                       endNode = startNode;
        }
 
        if ((flags & EvoEditor.CLAIM_CONTENT_FLAG_USE_PARENT_BLOCK_NODE) != 0) {
diff --git a/data/webkit/e-undo-redo.js b/data/webkit/e-undo-redo.js
index 07df49b383..bebbd1670a 100644
--- a/data/webkit/e-undo-redo.js
+++ b/data/webkit/e-undo-redo.js
@@ -373,12 +373,61 @@ EvoUndoRedo.before_input_cb = function(inputEvent)
                return;
        }
 
-       var opType = inputEvent.inputType, record;
+       var opType = inputEvent.inputType, record, startNode = null, endNode = null;
 
        if (EvoUndoRedo.isWordDelimEvent(inputEvent))
                opType += "::WordDelim";
 
-       record = EvoUndoRedo.StartRecord(EvoUndoRedo.RECORD_KIND_EVENT, opType, null, null,
+       if (opType == "deleteWordBackward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "backward", "word");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteWordForward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "forward", "word");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteSoftLineBackward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "backward", "line");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteSoftLineForward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "forward", "line");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteEntireSoftLine") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "backward", "line");
+               startNode = document.getSelection().baseNode;
+               document.getSelection().modify("move", "forward", "line");
+               endNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteHardLineBackward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "backward", "paragraph");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteHardLineForward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "forward", "paragraph");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteContentBackward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "backward", "paragraph");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       } else if (opType == "deleteContentForward") {
+               var sel = EvoSelection.Store(document);
+               document.getSelection().modify("move", "forward", "paragraph");
+               startNode = document.getSelection().baseNode;
+               EvoSelection.Restore(document, sel);
+       }
+
+       record = EvoUndoRedo.StartRecord(EvoUndoRedo.RECORD_KIND_EVENT, opType, startNode, endNode,
                EvoEditor.CLAIM_CONTENT_FLAG_SAVE_HTML | EvoEditor.CLAIM_CONTENT_FLAG_USE_PARENT_BLOCK_NODE);
 
        /* Changing format with collapsed selection doesn't change HTML structure immediately */


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