[evolution/wip/mcrha/webkit-jsc-api] e-undo-redo.js: Merge deleteByDrag followed by insertFromDrop into one undo step
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/mcrha/webkit-jsc-api] e-undo-redo.js: Merge deleteByDrag followed by insertFromDrop into one undo step
- Date: Thu, 23 Apr 2020 09:18:12 +0000 (UTC)
commit a4c5ae68ae16aa46aa719e21b55d132ed883c7d8
Author: Milan Crha <mcrha redhat com>
Date: Thu Apr 23 11:20:02 2020 +0200
e-undo-redo.js: Merge deleteByDrag followed by insertFromDrop into one undo step
These are coming in this order when drag&drop content inside the web view.
data/webkit/e-undo-redo.js | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
---
diff --git a/data/webkit/e-undo-redo.js b/data/webkit/e-undo-redo.js
index f0af6c15f7..2092004f7b 100644
--- a/data/webkit/e-undo-redo.js
+++ b/data/webkit/e-undo-redo.js
@@ -291,6 +291,27 @@ var EvoUndoRedo = {
maybeMergeInsertText : function(skipFirst) {
EvoUndoRedo.stack.maybeMergeConsecutive(skipFirst, "insertText");
EvoUndoRedo.stack.maybeMergeConsecutive(skipFirst, "insertText::WordDelim");
+ },
+
+ maybeMergeDragDrop : function() {
+ if (EvoUndoRedo.stack.current != EvoUndoRedo.stack.top ||
+ EvoUndoRedo.stack.current == EvoUndoRedo.stack.bottom ||
+ EvoUndoRedo.stack.clampIndex(EvoUndoRedo.stack.current - 1) ==
EvoUndoRedo.stack.bottom) {
+ return;
+ }
+
+ var curr, prev;
+
+ curr = EvoUndoRedo.stack.array[EvoUndoRedo.stack.current];
+ prev = EvoUndoRedo.stack.array[EvoUndoRedo.stack.clampIndex(EvoUndoRedo.stack.current
- 1)];
+
+ if (curr && prev &&
+ curr.kind == EvoUndoRedo.RECORD_KIND_EVENT &&
+ prev.kind == EvoUndoRedo.RECORD_KIND_EVENT &&
+ curr.opType == "insertFromDrop" &&
+ prev.opType == "deleteByDrag") {
+ EvoUndoRedo.GroupTopRecords(2, "dragDrop::merged");
+ }
}
},
@@ -478,8 +499,10 @@ EvoUndoRedo.inputCb = function(inputEvent)
EvoEditor.forceFormatStateUpdate = EvoEditor.forceFormatStateUpdate || opType == "" ||
opType.startsWith("format");
- if (opType == "insertFromDrop")
+ if (opType == "insertFromDrop") {
EvoUndoRedo.dropTarget = null;
+ EvoUndoRedo.stack.maybeMergeDragDrop();
+ }
EvoEditor.AfterInputEvent(inputEvent, isWordDelim);
}
@@ -768,6 +791,8 @@ EvoUndoRedo.GroupTopRecords = function(nRecords, opType)
EvoUndoRedo.stack.push(group);
}
+
+ EvoUndoRedo.stack.maybeStateChanged();
}
/* Backs up all the children elements between firstChildIndex and lastChildIndex inclusive,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]