From: Aleksander Ɓukasz Date: Fri, 13 Dec 2013 19:49:02 +0000 (+0100) Subject: editor: canvas - fix problem with detaching empty text nodes X-Git-Url: https://git.mdrn.pl/fnpeditor.git/commitdiff_plain/f2cfe219c603d0d912b5bd0484e22725026d85aa?hp=264005bc6b4f629d4ef7d32c0aa626e3da7afbc7 editor: canvas - fix problem with detaching empty text nodes This code is a remnant of the old canvas implementation that should be removed long time ago after switching to event based documents. And it just happens that it broke handling of nodeDetach event for of empty text nodes. --- diff --git a/src/editor/modules/documentCanvas/canvas/canvas.test.js b/src/editor/modules/documentCanvas/canvas/canvas.test.js index bb795ec..6343d23 100644 --- a/src/editor/modules/documentCanvas/canvas/canvas.test.js +++ b/src/editor/modules/documentCanvas/canvas/canvas.test.js @@ -33,6 +33,7 @@ describe('new Canvas', function() { c = canvas.fromXMLDocument(doc); expect(c.doc().children()).to.have.length(3); + expect(c.doc().children()[0].canvas).to.equal(c); }); }); @@ -105,6 +106,26 @@ describe('Listening to document changes', function() { expect(headerNode.getData('canvasElement').sameNode(headerElement)).to.equal(true, 'node->element'); expect(headerElement.data('wlxmlNode').sameNode(headerNode)).to.equal(true, 'element->node'); }); + + it('Handles nodeDetached event for an empty text node', function(done) { + var doc = wlxml.WLXMLDocumentFromXML('
Ab
'), + aTextNode = doc.root.contents()[0].contents()[0], + aTextElement; + + canvas.fromXMLDocument(doc); + aTextElement = utils.findCanvasElementInParent(aTextNode, aTextNode.parent()); // TODO: This really should be easier... + + aTextElement.setText(''); + + wait(function() { + var parent = aTextElement.parent(); + expect(aTextElement.getText({raw:true})).to.equal(utils.unicode.ZWS, 'canvas represents this as empty node'); + aTextElement.data('wlxmlNode').detach(); + expect(parent.children().length).to.equal(1); + expect(parent.children()[0].getWlxmlTag()).to.equal('span'); + done(); + }); + }); }); describe('Cursor', function() { diff --git a/src/editor/modules/documentCanvas/canvas/documentElement.js b/src/editor/modules/documentCanvas/canvas/documentElement.js index b5269ca..60e79de 100644 --- a/src/editor/modules/documentCanvas/canvas/documentElement.js +++ b/src/editor/modules/documentCanvas/canvas/documentElement.js @@ -229,19 +229,11 @@ $.extend(DocumentNodeElement.prototype, { var elementContent = this._container().contents(); var element = this; - elementContent.each(function(idx) { + elementContent.each(function() { var childElement = DocumentElement.fromHTMLElement(this, element.canvas); if(childElement === undefined) { return true; } - if(idx === 0 && elementContent.length > 1 && elementContent[1].nodeType === Node.ELEMENT_NODE && (childElement instanceof DocumentTextElement) && $.trim($(this).text()) === '') { - return true; - } - if(idx > 0 && childElement instanceof DocumentTextElement) { - if(toret[toret.length-1] instanceof DocumentNodeElement && $.trim($(this).text()) === '') { - return true; - } - } toret.push(childElement); }); return toret;