From 7fbd869e69b05b5d9c9050aaf636b6660b6ace7c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Mon, 18 Nov 2013 09:40:41 +0100 Subject: [PATCH] findCanvasElementInParent --- .../modules/documentCanvas/canvas/utils.js | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/editor/modules/documentCanvas/canvas/utils.js b/src/editor/modules/documentCanvas/canvas/utils.js index 87911cf..41a2a0a 100644 --- a/src/editor/modules/documentCanvas/canvas/utils.js +++ b/src/editor/modules/documentCanvas/canvas/utils.js @@ -24,21 +24,29 @@ var findCanvasElement = function(node) { return node.getData('canvasElement'); } if(node.nodeType === Node.TEXT_NODE) { - var parent = node.parent(), - toret; - - parent.children().forEach(function(child) { - if(child.data('wlxmlNode').sameNode(node)) - toret = child; - }); - if(toret) - return toret; + return findCanvasElementInParent(node, node.parent()) } }; +/** + * We take child and its parent as arguments separatly to + * handle situation where child was removed from WLXMLDocument + * 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; + }); + return toret; +} + return { nearestInDocumentOrder: nearestInDocumentOrder, findCanvasElement: findCanvasElement, + findTextElementInParent: findTextElementInParent, unicode: { ZWS: '\u200B' } -- 2.20.1