X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2c0f5a6242a51bab12bd383b0097cba6027020dd..5c398fccc970cf74b857ea5c191b325564f9893f:/src/editor/modules/documentCanvas/canvas/utils.js?ds=sidebyside diff --git a/src/editor/modules/documentCanvas/canvas/utils.js b/src/editor/modules/documentCanvas/canvas/utils.js index 9f5ee46..337f4d3 100644 --- a/src/editor/modules/documentCanvas/canvas/utils.js +++ b/src/editor/modules/documentCanvas/canvas/utils.js @@ -3,7 +3,7 @@ define([ ], function($) { 'use strict'; - +/* globals Node */ var nearestInDocumentOrder = function(selector, direction, element) { var parents = $(element).parents(), @@ -20,12 +20,12 @@ var nearestInDocumentOrder = function(selector, direction, element) { return null; }; -var findCanvasElement = function(node) { +var findCanvasElement = function(node, childOf) { if(node.nodeType === Node.ELEMENT_NODE) { return node.getData('canvasElement'); } if(node.nodeType === Node.TEXT_NODE) { - return findCanvasElementInParent(node, node.parent()); + return findCanvasElementInParent(node, childOf || node.parent()); } }; @@ -35,13 +35,21 @@ var findCanvasElement = function(node) { * and it lost reference to its parent (but we may still have it on canvas). */ var findCanvasElementInParent = function(wlxmlChildNode, wlxmlParentNode) { - var parentElement = findCanvasElement(wlxmlParentNode), - toret; - parentElement.children().forEach(function(child) { - if(child.data('wlxmlNode').sameNode(wlxmlChildNode)) { - toret = child; + var parentElement, toret; + + if(wlxmlParentNode === null) { + toret = wlxmlChildNode.getData('canvasElement'); + if(toret.parent()) { + throw new Error('This should never happen: root canvas element doesn\'t render root document node!'); } - }); + } else { + parentElement = findCanvasElement(wlxmlParentNode); + parentElement.children().forEach(function(child) { + if(child.data('wlxmlNode').sameNode(wlxmlChildNode)) { // czemu tu, przy drugim undo child nie mial data? + toret = child; + } + }); + } return toret; };