some other minor changes from milpeer
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / canvas.js
index ebede40..de9f20e 100644 (file)
@@ -174,7 +174,9 @@ $.extend(Canvas.prototype, Backbone.Events, {
 
     triggerKeyEvent: function(keyEvent, selection) {
         selection = selection || this.getSelection();
-        if(selection && (selection.type === 'caret' || selection.type === 'textSelection') && selection.toDocumentFragment().isValid()) {
+        if(selection && (
+            (selection.type === 'caret' || selection.type === 'textSelection') && selection.toDocumentFragment().isValid()
+            || selection.type == 'nodeSelection')) {
             keyboard.handleKeyEvent(keyEvent, selection);
         }
     },
@@ -267,7 +269,10 @@ $.extend(Canvas.prototype, Backbone.Events, {
                     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');
                     }
@@ -547,18 +552,18 @@ $.extend(Cursor.prototype, {
         return this.getSelectionAnchor();
     },
     getSelectionStart: function() {
-        return this.getSelectionBoundry('start');
+        return this.getSelectionBoundary('start');
     },
     getSelectionEnd: function() {
-        return this.getSelectionBoundry('end');
+        return this.getSelectionBoundary('end');
     },
     getSelectionAnchor: function() {
-        return this.getSelectionBoundry('anchor');
+        return this.getSelectionBoundary('anchor');
     },
     getSelectionFocus: function() {
-        return this.getSelectionBoundry('focus');
+        return this.getSelectionBoundary('focus');
     },
-    getSelectionBoundry: function(which) {
+    getSelectionBoundary: function(which) {
         /* globals window */
         var selection = window.getSelection(),
             anchorElement = this.canvas.getDocumentElement(selection.anchorNode),