<html>\r
<head>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \r
<title>The source code</title>\r
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
* 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
- item = this.container.getComponent(item);\r
- if(this.activeItem != item){\r
- if(this.activeItem){\r
- this.activeItem.hide();\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
+ // Change activeItem reference\r
this.activeItem = item;\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
- this.container.doLayout();\r
- if(this.layoutOnCardChange && item.doLayout){\r
+\r
+ this.layout();\r
+\r
+ if(item.doLayout){\r
item.doLayout();\r
}\r
+ item.fireEvent('activate', item);\r
}\r
},\r
\r