*/\r
activeOnTop : false,\r
\r
+ type: 'accordion',\r
+\r
renderItem : function(c){\r
if(this.animate === false){\r
c.animCollapse = false;\r
c.header.addClass('x-accordion-hd');\r
c.on('beforeexpand', this.beforeExpand, this);\r
},\r
- \r
+\r
onRemove: function(c){\r
Ext.layout.AccordionLayout.superclass.onRemove.call(this, c);\r
if(c.rendered){\r
if(this.activeOnTop){\r
p.el.dom.parentNode.insertBefore(p.el.dom, p.el.dom.parentNode.firstChild);\r
}\r
+ // Items have been hidden an possibly rearranged, we need to get the container size again.\r
this.layout();\r
},\r
\r
// private\r
setItemSize : function(item, size){\r
if(this.fill && item){\r
- var hh = 0;\r
- this.container.items.each(function(p){\r
- if(p != item){\r
+ var hh = 0, i, ct = this.getRenderedItems(this.container), len = ct.length, p;\r
+ // Add up all the header heights\r
+ for (i = 0; i < len; i++) {\r
+ if((p = ct[i]) != item){\r
hh += p.header.getHeight();\r
- } \r
- });\r
+ }\r
+ };\r
+ // Subtract the header heights from the container size\r
size.height -= hh;\r
+ // Call setSize on the container to set the correct height. For Panels, deferedHeight\r
+ // will simply store this size for when the expansion is done.\r
item.setSize(size);\r
}\r
},\r
setActiveItem : function(item){\r
this.setActive(item, true);\r
},\r
- \r
+\r
// private\r
setActive : function(item, expand){\r
var ai = this.activeItem;\r