-
23 Jan 2013 6:55 AM #1
[4.2.0.265] Ext.Component: show() results in two layout runs if autoRender true
[4.2.0.265] Ext.Component: show() results in two layout runs if autoRender true
REQUIRED INFORMATION
Ext version tested:- Ext 4.1.2.1
- Ext 4.2.0.265
- When calling show() on a Ext.Component that has floating or autoRender its Layout is done twice!
- Create Ext.window.Window
- Show it (using show())
- Layout is run once
- Layout is run twice
Code:w = Ext.create('Ext.window.Window'); layoutCountBefore = w.layoutCounter; w.show(); w.layoutCounter - layoutCountBefore; // 2
HELPFUL INFORMATION
Possible fix:
A smaller fix would be the following, but it has its downside that you have to use it everywhere you show a window:Code:Ext.define('Ext.fix.Component', { override: 'Ext.Component', show: function(animateTarget, cb, scope) { var me = this, rendered = me.rendered; if (rendered && me.isVisible()) { if (me.toFrontOnShow && me.floating) { me.toFront(); } } else { if (me.fireEvent('beforeshow', me) !== false) { // Render on first show if there is an autoRender config, or if this is a floater (Window, Menu, BoundList etc). me.hidden = false; if (!rendered && (me.autoRender || me.floating)) { var autoRendered = true; Ext.suspendLayouts(); me.doAutoRender(); rendered = me.rendered; // there was no rendering done, so set autoRendered back to false and resume layouts if (!rendered) { autoRendered = false; Ext.resumeLayouts(); } } if (rendered) { me.beforeShow(); me.onShow.apply(me, arguments); if (autoRendered) { autoRendered = false; Ext.resumeLayouts(true); } me.afterShow.apply(me, arguments); } } else { me.onShowVeto(); } } return me; } });
Code:w = Ext.create('Ext.window.Window'); Ext.suspendLayouts(); w.show(); Ext.resumeLayouts(true); w.center();
-
23 Jan 2013 7:47 AM #2Sencha - Senior Forum Manager
- Join Date
- Mar 2007
- Location
- St. Louis, MO
- Posts
- 33,684
- Vote Rating
- 435
Thanks for the report! I have opened a bug in our bug tracker.
Success! Looks like we've fixed this one. According to our records the fix was applied for
EXTJSIV-8291
in
4.2.1.



Reply With Quote