X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..ddde20c4d4ac6a8d53de079761155de813845b3c:/src/widgets/tree/TreeNode.js diff --git a/src/widgets/tree/TreeNode.js b/src/widgets/tree/TreeNode.js index 75b0483a..6d1be72d 100644 --- a/src/widgets/tree/TreeNode.js +++ b/src/widgets/tree/TreeNode.js @@ -1,6 +1,6 @@ /*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC + * Ext JS Library 3.2.0 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ @@ -216,15 +216,12 @@ Ext.extend(Ext.tree.TreeNode, Ext.data.Node, { // these methods are overridden to provide lazy rendering support // private override appendChild : function(n){ - var node, exists; if(!n.render && !Ext.isArray(n)){ n = this.getLoader().createNode(n); - }else{ - exists = !n.parentNode; } - node = Ext.tree.TreeNode.superclass.appendChild.call(this, n); - if(node){ - this.afterAdd(node, exists); + var node = Ext.tree.TreeNode.superclass.appendChild.call(this, n); + if(node && this.childrenRendered){ + node.render(); } this.ui.updateExpandIcon(); return node; @@ -234,47 +231,36 @@ Ext.extend(Ext.tree.TreeNode, Ext.data.Node, { removeChild : function(node, destroy){ this.ownerTree.getSelectionModel().unselect(node); Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments); - // if it's been rendered remove dom node - if(node.ui.rendered){ - node.ui.remove(); - } - if(this.childNodes.length < 1){ - this.collapse(false, false); - }else{ - this.ui.updateExpandIcon(); - } - if(!this.firstChild && !this.isHiddenRoot()) { - this.childrenRendered = false; + // only update the ui if we're not destroying + if(!destroy){ + // if it's been rendered remove dom node + if(node.ui.rendered){ + node.ui.remove(); + } + if(this.childNodes.length < 1){ + this.collapse(false, false); + }else{ + this.ui.updateExpandIcon(); + } + if(!this.firstChild && !this.isHiddenRoot()){ + this.childrenRendered = false; + } } return node; }, // private override insertBefore : function(node, refNode){ - var newNode, exists; if(!node.render){ node = this.getLoader().createNode(node); - } else { - exists = Ext.isObject(node.parentNode); } - newNode = Ext.tree.TreeNode.superclass.insertBefore.call(this, node, refNode); - if(newNode && refNode){ - this.afterAdd(newNode, exists); + var newNode = Ext.tree.TreeNode.superclass.insertBefore.call(this, node, refNode); + if(newNode && refNode && this.childrenRendered){ + node.render(); } this.ui.updateExpandIcon(); return newNode; }, - - // private - afterAdd : function(node, exists){ - if(this.childrenRendered){ - // bulk render if the node already exists - node.render(exists); - }else if(exists){ - // make sure we update the indent - node.renderIndent(true, true); - } - }, /** * Sets the text for this node @@ -556,9 +542,12 @@ Ext.extend(Ext.tree.TreeNode, Ext.data.Node, { } }, - destroy : function(){ - this.unselect(true); - Ext.tree.TreeNode.superclass.destroy.call(this); + //inherit docs + destroy : function(silent){ + if(silent === true){ + this.unselect(true); + } + Ext.tree.TreeNode.superclass.destroy.call(this, silent); Ext.destroy(this.ui, this.loader); this.ui = this.loader = null; },