From 07eb2df53a5308d54c19da982881d8de172c85ef Mon Sep 17 00:00:00 2001 From: Trevor Parscal Date: Wed, 20 Jun 2012 23:20:42 -0700 Subject: [PATCH] Got rid of iteration to get the surface Also added a safety check to make it easier to spot a regression Change-Id: I44515c867852f2f726be74161f6b8e466c0933da --- modules/ve/ce/nodes/ve.ce.DocumentNode.js | 10 ++++++++++ modules/ve/ce/nodes/ve.ce.TextNode.js | 13 ++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/modules/ve/ce/nodes/ve.ce.DocumentNode.js b/modules/ve/ce/nodes/ve.ce.DocumentNode.js index 97b3ce4a36..a7704523b8 100644 --- a/modules/ve/ce/nodes/ve.ce.DocumentNode.js +++ b/modules/ve/ce/nodes/ve.ce.DocumentNode.js @@ -44,6 +44,16 @@ ve.ce.DocumentNode.prototype.getOuterLength = function() { return this.length; }; +/** + * Gets the surface this document is attached to. + * + * @method + * @returns {ve.ve.Surface} Surface this document is attached to + */ +ve.ce.DocumentNode.prototype.getSurface = function() { + return this.surface; +}; + /* Registration */ ve.ce.nodeFactory.register( 'document', ve.ce.DocumentNode ); diff --git a/modules/ve/ce/nodes/ve.ce.TextNode.js b/modules/ve/ce/nodes/ve.ce.TextNode.js index d4a9836867..f8bf59abb3 100644 --- a/modules/ve/ce/nodes/ve.ce.TextNode.js +++ b/modules/ve/ce/nodes/ve.ce.TextNode.js @@ -122,7 +122,10 @@ ve.ce.TextNode.annotationRenderers = { * @method */ ve.ce.TextNode.prototype.onUpdate = function( force ) { - if ( force === true || this.getSurface().render === true ) { + if ( !force && !this.root.getSurface ) { + throw 'Can not update a text node that is not attached to a document'; + } + if ( force === true || this.root.getSurface().render === true ) { var $new = $( $( '' + this.getHtml() + '' ).contents() ); if ( $new.length === 0 ) { $new = $new.add( document.createTextNode( '' ) ); @@ -301,14 +304,6 @@ ve.ce.TextNode.prototype.getHtml = function() { return out; }; -ve.ce.TextNode.prototype.getSurface = function() { - var view = this; - while( !view.surface ) { - view = view.parent; - } - return view.surface; -}; - /* Registration */ ve.ce.nodeFactory.register( 'text', ve.ce.TextNode );