fix some zero-width space weirdness
authorJan Szejko <janek37@gmail.com>
Tue, 28 Feb 2017 15:47:12 +0000 (16:47 +0100)
committerJan Szejko <janek37@gmail.com>
Tue, 28 Feb 2017 15:47:12 +0000 (16:47 +0100)
src/editor/modules/documentCanvas/canvas/canvas.js
src/editor/modules/documentCanvas/canvas/documentElement.js
src/editor/modules/documentCanvas/canvas/keyboard.js

index 7ebecc8..d7d94a7 100644 (file)
@@ -274,7 +274,10 @@ $.extend(Canvas.prototype, Backbone.Events, {
                     if(mutation.target.data === '') {
                         mutation.target.data = utils.unicode.ZWS;
                     }
                     if(mutation.target.data === '') {
                         mutation.target.data = utils.unicode.ZWS;
                     }
-                    else if(mutation.oldValue === utils.unicode.ZWS) {
+                    if(mutation.target.data === mutation.oldValue) {
+                        return; // shouldn't happen, but better be safe
+                    }
+                    if(mutation.oldValue === utils.unicode.ZWS) {
                         mutation.target.data = mutation.target.data.replace(utils.unicode.ZWS, '');
                         canvas._moveCaretToTextElement(canvas.getDocumentElement(mutation.target), 'end');
                     }
                         mutation.target.data = mutation.target.data.replace(utils.unicode.ZWS, '');
                         canvas._moveCaretToTextElement(canvas.getDocumentElement(mutation.target), 'end');
                     }
index dcf05b2..d6d60d3 100644 (file)
@@ -279,7 +279,7 @@ $.extend(DocumentTextElement.prototype, {
         if(text === '') {
             text = utils.unicode.ZWS;
         }
         if(text === '') {
             text = utils.unicode.ZWS;
         }
-        if(text !== this.getText()) {
+        if(text !== this.dom.contents()[0].data) {
             this.dom.contents()[0].data = text;
         }
     },
             this.dom.contents()[0].data = text;
         }
     },
index 0ad2ff3..99201bc 100644 (file)
@@ -247,11 +247,12 @@ var keyEventHandlers = [
                 element = s.canvas.getNearestTextElement('below', s.element);
             }
 
                 element = s.canvas.getNearestTextElement('below', s.element);
             }
 
+            e.preventDefault();
+
             if(!element) {
                 return;
             }
 
             if(!element) {
                 return;
             }
 
-
             var parent = element.wlxmlNode.parent();
             if(element.wlxmlNode.getIndex() === 0 && parent.isContextRoot() && (!parent.is('item') || parent.getIndex() === 0)) {
                 // Don't even try to do anything at the edge of a context root, except for non-first items
             var parent = element.wlxmlNode.parent();
             if(element.wlxmlNode.getIndex() === 0 && parent.isContextRoot() && (!parent.is('item') || parent.getIndex() === 0)) {
                 // Don't even try to do anything at the edge of a context root, except for non-first items
@@ -259,8 +260,6 @@ var keyEventHandlers = [
                 return;
             }
 
                 return;
             }
 
-            e.preventDefault();
-
             s.canvas.wlxmlDocument.transaction(function() {
                 if(element.wlxmlNode.getIndex() === 0) {
                     goto = element.wlxmlNode.parent().moveUp();
             s.canvas.wlxmlDocument.transaction(function() {
                 if(element.wlxmlNode.getIndex() === 0) {
                     goto = element.wlxmlNode.parent().moveUp();