* true might improve performance.\r
*/\r
deferredRender : false,\r
- \r
+\r
<div id="cfg-Ext.layout.CardLayout-layoutOnCardChange"></div>/**\r
* @cfg {Boolean} layoutOnCardChange\r
* True to force a layout of the active item when the active card is changed. Defaults to false.\r
*/\r
// private\r
renderHidden : true,\r
- \r
+\r
+ type: 'card',\r
+\r
constructor: function(config){\r
Ext.layout.CardLayout.superclass.constructor.call(this, config);\r
- // this.forceLayout = (this.deferredRender === false);\r
},\r
\r
<div id="method-Ext.layout.CardLayout-setActiveItem"></div>/**\r
* @param {String/Number} item The string component id or numeric index of the item to activate\r
*/\r
setActiveItem : function(item){\r
- var ai = this.activeItem;\r
- item = this.container.getComponent(item);\r
- if(ai != item){\r
+ var ai = this.activeItem,\r
+ ct = this.container;\r
+ item = ct.getComponent(item);\r
+\r
+ // Is this a valid, different card?\r
+ if(item && ai != item){\r
+\r
+ // Changing cards, hide the current one\r
if(ai){\r
ai.hide();\r
+ if (ai.hidden !== true) {\r
+ return false;\r
+ }\r
ai.fireEvent('deactivate', ai);\r
}\r
- var layout = item.doLayout && (this.layoutOnCardChange || !item.rendered);\r
+ // Change activeItem reference\r
this.activeItem = item;\r
- if(item){\r
- item.show();\r
- }\r
+\r
+ // The container is about to get a recursive layout, remove any deferLayout reference\r
+ // because it will trigger a redundant layout.\r
+ delete item.deferLayout;\r
+\r
+ // Show the new component\r
+ item.show();\r
+\r
this.layout();\r
- if(item && layout){\r
+\r
+ if(item.doLayout){\r
item.doLayout();\r
}\r
item.fireEvent('activate', item);\r