X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/22a990585c518e18de8fd2b023145d6ac305a6fa..f098ff9873de73d1fd6d71ce64b83ae318e8bd7e:/src/editor/modules/documentCanvas/canvas/keyboard.js diff --git a/src/editor/modules/documentCanvas/canvas/keyboard.js b/src/editor/modules/documentCanvas/canvas/keyboard.js index f879851..4cf3d77 100644 --- a/src/editor/modules/documentCanvas/canvas/keyboard.js +++ b/src/editor/modules/documentCanvas/canvas/keyboard.js @@ -4,7 +4,7 @@ define([ ], function(documentElement, utils) { 'use strict'; - +/* globals gettext */ var KEYS = { ENTER: 13, @@ -44,20 +44,27 @@ handlers.push({key: KEYS.ENTER, event.preventDefault(); var cursor = canvas.getCursor(), position = cursor.getPosition(), - element = position.element, - added; + element = position.element; if(Object.keys(cursor.getPosition()).length === 0) { var currentElement = canvas.getCurrentNodeElement(); if(currentElement) { - canvas.wlxmlDocument.startTransaction(); - added = currentElement.wlxmlNode.after({ - tagName: currentElement.getWlxmlTag() || 'div', - attrs: {'class': currentElement.getWlxmlClass() || 'p'} + canvas.wlxmlDocument.transaction(function() { + var added = currentElement.wlxmlNode.after({ + tagName: currentElement.getWlxmlTag() || 'div', + attrs: {'class': currentElement.getWlxmlClass() || 'p'} + }); + added.append({text:''}); + return added; + }, { + metadata: { + description: gettext('Splitting text') + }, + success: function(ret) { + canvas.setCurrentElement(utils.findCanvasElement(ret), {caretTo: 'start'}); + } }); - added.append({text:''}); - canvas.wlxmlDocument.endTransaction(); - canvas.setCurrentElement(utils.findCanvasElement(added), {caretTo: 'start'}); + } return; } @@ -68,13 +75,20 @@ handlers.push({key: KEYS.ENTER, element = element.parent(); } - canvas.wlxmlDocument.startTransaction(); - added = element.wlxmlNode.after( - {tagName: element.getWlxmlTag() || 'div', attrs: {'class': element.getWlxmlClass() || 'p'}} - ); - added.append({text: ''}); - canvas.wlxmlDocument.endTransaction(); - canvas.setCurrentElement(utils.findCanvasElement(added), {caretTo: 'start'}); + canvas.wlxmlDocument.transaction(function() { + var added = element.wlxmlNode.after( + {tagName: element.getWlxmlTag() || 'div', attrs: {'class': element.getWlxmlClass() || 'p'}} + ); + added.append({text: ''}); + return added; + }, { + metadata: { + description: gettext('Splitting text') + }, + success: function(ret) { + canvas.setCurrentElement(utils.findCanvasElement(ret), {caretTo: 'start'}); + } + }); } else { @@ -100,9 +114,17 @@ handlers.push({key: KEYS.ENTER, // goto = nodes.second; // gotoOptions = {caretTo: 'start'}; // } + var node = position.element.wlxmlNode, + result, goto, gotoOptions; + + node.document.transaction(function() { + result = position.element.wlxmlNode.breakContent({offset: position.offset}); + }, { + metadata: { + description: gettext('Splitting text') + } + }); - var result = position.element.wlxmlNode.breakContent({offset: position.offset}), - goto, gotoOptions; if(result.emptyText) { goto = result.emptyText; gotoOptions = {}; @@ -183,11 +205,14 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE], var cursor = canvas.getCursor(), position = canvas.getCursor().getPosition(), element = position.element, - node = element.wlxmlNode, + node = element ? element.wlxmlNode : null, direction = 'above', caretTo = 'end', goto; + if(!element || !node) { + return; + } if(event.which === KEYS.DELETE) { direction = 'below'; @@ -273,10 +298,16 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE], } if(element) { goto = element.wlxmlNode.mergeContentUp(); - canvas.setCurrentElement(goto.node, {caretTo: goto.offset}); + if(goto) { + canvas.setCurrentElement(goto.node, {caretTo: goto.offset}); + } } event.preventDefault(); } + }, { + metadata: { + description: gettext('Remove text') + } }); } });