X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/25ef3491bd9ae007ff1fc2b0d7943e6eaaccf775..2e847cf21b8ab9d15fa167b315ca5b2fa92638fc:/src/widgets/tree/TreeEventModel.js diff --git a/src/widgets/tree/TreeEventModel.js b/src/widgets/tree/TreeEventModel.js index 2e3e67a5..2d8ea428 100644 --- a/src/widgets/tree/TreeEventModel.js +++ b/src/widgets/tree/TreeEventModel.js @@ -1,6 +1,6 @@ /*! - * Ext JS Library 3.0.3 - * Copyright(c) 2006-2009 Ext JS, LLC + * Ext JS Library 3.1.1 + * Copyright(c) 2006-2010 Ext JS, LLC * licensing@extjs.com * http://www.extjs.com/license */ @@ -12,7 +12,7 @@ Ext.tree.TreeEventModel = function(tree){ Ext.tree.TreeEventModel.prototype = { initEvents : function(){ var t = this.tree; - + if(t.trackMouseOver !== false){ t.mon(t.innerCt, { scope: this, @@ -85,42 +85,55 @@ Ext.tree.TreeEventModel.prototype = { }, trackExit : function(e){ - if(this.lastOverNode && !e.within(this.lastOverNode.ui.getEl())){ - this.onNodeOut(e, this.lastOverNode); + if(this.lastOverNode){ + if(this.lastOverNode.ui && !e.within(this.lastOverNode.ui.getEl())){ + this.onNodeOut(e, this.lastOverNode); + } delete this.lastOverNode; Ext.getBody().un('mouseover', this.trackExit, this); this.trackingDoc = false; } + }, delegateClick : function(e, t){ - if(!this.beforeEvent(e)){ - return; - } - - if(e.getTarget('input[type=checkbox]', 1)){ - this.onCheckboxClick(e, this.getNode(e)); - } - else if(e.getTarget('.x-tree-ec-icon', 1)){ - this.onIconClick(e, this.getNode(e)); - } - else if(this.getNodeTarget(e)){ - this.onNodeClick(e, this.getNode(e)); + if(this.beforeEvent(e)){ + if(e.getTarget('input[type=checkbox]', 1)){ + this.onCheckboxClick(e, this.getNode(e)); + }else if(e.getTarget('.x-tree-ec-icon', 1)){ + this.onIconClick(e, this.getNode(e)); + }else if(this.getNodeTarget(e)){ + this.onNodeClick(e, this.getNode(e)); + }else{ + this.onContainerEvent(e, 'click'); + } } }, delegateDblClick : function(e, t){ - if(this.beforeEvent(e) && this.getNodeTarget(e)){ - this.onNodeDblClick(e, this.getNode(e)); + if(this.beforeEvent(e)){ + if(this.getNodeTarget(e)){ + this.onNodeDblClick(e, this.getNode(e)); + }else{ + this.onContainerEvent(e, 'dblclick'); + } } }, delegateContextMenu : function(e, t){ - if(this.beforeEvent(e) && this.getNodeTarget(e)){ - this.onNodeContextMenu(e, this.getNode(e)); + if(this.beforeEvent(e)){ + if(this.getNodeTarget(e)){ + this.onNodeContextMenu(e, this.getNode(e)); + }else{ + this.onContainerEvent(e, 'contextmenu'); + } } }, + onContainerEvent: function(e, type){ + this.tree.fireEvent('container' + type, this.tree, e); + }, + onNodeClick : function(e, node){ node.ui.onClick(e); }, @@ -159,7 +172,8 @@ Ext.tree.TreeEventModel.prototype = { }, beforeEvent : function(e){ - if(this.disabled){ + var node = this.getNode(e); + if(this.disabled || !node || !node.ui){ e.stopEvent(); return false; }