X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2687ec6cbbe8101a4faa232c79f5c1321dcebe6d..a6983a6a33c76bc7ae107c604ba73c3571aed7b8:/src/editor/modules/documentCanvas/canvas/keyboard.js?ds=inline diff --git a/src/editor/modules/documentCanvas/canvas/keyboard.js b/src/editor/modules/documentCanvas/canvas/keyboard.js index fc8be1e..fd964e0 100644 --- a/src/editor/modules/documentCanvas/canvas/keyboard.js +++ b/src/editor/modules/documentCanvas/canvas/keyboard.js @@ -48,11 +48,11 @@ handlers.push({key: KEYS.ENTER, if(Object.keys(cursor.getPosition()).length === 0) { var currentElement = canvas.getCurrentNodeElement(); - if(currentElement) { + if(currentElement && !currentElement.wlxmlNode.isRoot()) { canvas.wlxmlDocument.transaction(function() { var added = currentElement.wlxmlNode.after({ - tagName: currentElement.getWlxmlTag() || 'div', - attrs: {'class': currentElement.getWlxmlClass() || 'p'} + tagName: currentElement.wlxmlNode.getTagName() || 'div', + attrs: {'class': currentElement.wlxmlNode.getClass() || 'p'} }); added.append({text:''}); return added; @@ -61,7 +61,7 @@ handlers.push({key: KEYS.ENTER, description: gettext('Splitting text') }, success: function(ret) { - canvas.setCurrentElement(utils.findCanvasElement(ret), {caretTo: 'start'}); + canvas.setCurrentElement(utils.getElementForNode(ret), {caretTo: 'start'}); } }); @@ -77,7 +77,7 @@ handlers.push({key: KEYS.ENTER, canvas.wlxmlDocument.transaction(function() { var added = element.wlxmlNode.after( - {tagName: element.getWlxmlTag() || 'div', attrs: {'class': element.getWlxmlClass() || 'p'}} + {tagName: element.wlxmlNode.getTagName() || 'div', attrs: {'class': element.wlxmlNode.getClass() || 'p'}} ); added.append({text: ''}); return added; @@ -86,7 +86,7 @@ handlers.push({key: KEYS.ENTER, description: gettext('Splitting text') }, success: function(ret) { - canvas.setCurrentElement(utils.findCanvasElement(ret), {caretTo: 'start'}); + canvas.setCurrentElement(utils.getElementForNode(ret), {caretTo: 'start'}); } }); @@ -96,24 +96,6 @@ handlers.push({key: KEYS.ENTER, return false; // top level element is unsplittable } - //var nodes = position.element.data('wlxmlNode').split({offset: position.offset}), - // var nodes = position.element.data('wlxmlNode').transform('split', {offset: position.offset}), - // newEmpty, - // goto, - // gotoOptions; - - // if(position.offsetAtBeginning) - // newEmpty = nodes.first; - // else if(position.offsetAtEnd) - // newEmpty = nodes.second; - - // if(newEmpty) { - // //goto = newEmpty.append({text: ''}); - // gotoOptions = {}; - // } else { - // goto = nodes.second; - // gotoOptions = {caretTo: 'start'}; - // } var node = position.element.wlxmlNode, result, goto, gotoOptions; @@ -133,7 +115,7 @@ handlers.push({key: KEYS.ENTER, gotoOptions = {caretTo: 'start'}; } - canvas.setCurrentElement(utils.findCanvasElement(goto), gotoOptions); + canvas.setCurrentElement(utils.getElementForNode(goto), gotoOptions); } } } @@ -152,7 +134,7 @@ handlers.push({keys: [KEYS.ARROW_UP, KEYS.ARROW_DOWN, KEYS.ARROW_LEFT, KEYS.ARRO direction = 'below'; caretTo = 'start'; } - var el = canvas.getDocumentElement(utils.nearestInDocumentOrder('[document-text-element]', direction, element.dom()[0])); + var el = canvas.getDocumentElement(utils.nearestInDocumentOrder('[document-text-element]', direction, element.dom[0])); if(el) { canvas.setCurrentElement(el, {caretTo: caretTo}); } @@ -226,7 +208,7 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE], if(direction === 'above') { if(start.offsetAtBeginning) { - goto = start.element.getNearestTextElement('above'); + goto = canvas.getNearestTextElement('above', start.element); caretTo = 'end'; } else { goto = start.element; @@ -234,7 +216,7 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE], } } else { if(end.offsetAtEnd) { - goto = start.element.getNearestTextElement('below'); + goto = canvas.getNearestTextElement('below', start.element); caretTo = 'start'; } else { goto = end.element; @@ -283,22 +265,24 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE], if(grandParent && grandParent.children().length === 1) { goto = grandParent.wlxmlNode.append({text: ''}); } else { - goto = element.getNearestTextElement(direction); + goto = canvas.getNearestTextElement(direction, element); } parent.wlxmlNode.detach(); } else { - goto = element.getNearestTextElement(direction); + goto = canvas.getNearestTextElement(direction, element); element.wlxmlNode.detach(); } canvas.setCurrentElement(goto, {caretTo: caretTo}); } else if(cursorAtOperationEdge) { if(direction === 'below') { - element = element.getNearestTextElement(direction); + element = canvas.getNearestTextElement(direction, element); } if(element) { goto = element.wlxmlNode.mergeContentUp(); - canvas.setCurrentElement(goto.node, {caretTo: goto.offset}); + if(goto) { + canvas.setCurrentElement(goto.node, {caretTo: goto.offset}); + } } event.preventDefault(); }