Thank you for reporting this bug. We will make it our priority to review this report.
  1. #11
    Sencha - Community Support Team Condor's Avatar
    Join Date
    Mar 2007
    Location
    The Netherlands
    Posts
    24,246
    Vote Rating
    96
    Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of

      0  

    Default


    Yes, you would also need:
    Code:
    Ext.override(Ext.layout.ContainerLayout, {
    	onResize: function(){
    		if(this.container.collapsed && !this.container.isSlid){
    			return;
    		}
    		var b = this.container.bufferResize;
    		if(b){
    			if(!this.resizeTask){
    				this.resizeTask = new Ext.util.DelayedTask(this.layout, this);
    				this.resizeBuffer = typeof b == 'number' ? b : 100;
    			}
    			this.resizeTask.delay(this.resizeBuffer);
    		}else{
    			this.layout();
    		}
    	}
    });
    Ext.override(Ext.layout.FitLayout, {
    	onLayout : function(ct, target){
    		Ext.layout.FitLayout.superclass.onLayout.call(this, ct, target);
    		if(!this.container.collapsed || this.container.isSlid){
    			this.setItemSize(this.activeItem || ct.items.itemAt(0), target.getStyleSize());
    		}
    	}
    });
    (original post also updated with this code)
    -->

  2. #12
    Sencha Premium Member
    Join Date
    Mar 2008
    Location
    Philadelphia, PA
    Posts
    131
    Vote Rating
    0
    mprice is on a distinguished road

      0  

    Thumbs up


    Perfect! So next logical question is - when will this fix be incorporated into the product?
    -->

  3. #13
    Ext User
    Join Date
    Feb 2009
    Posts
    56
    Vote Rating
    0
    uptodate is on a distinguished road

      0  

    Default


    is this bug solved in Extjs 3.0 ?
    -->

  4. #14
    Sencha - Community Support Team Condor's Avatar
    Join Date
    Mar 2007
    Location
    The Netherlands
    Posts
    24,246
    Vote Rating
    96
    Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of

      0  

    Default


    No, it still isn't fixed.

    I'll move this thread to the Ext 3.0 Bugs section.
    -->

  5. #15
    Ext User
    Join Date
    Feb 2009
    Posts
    56
    Vote Rating
    0
    uptodate is on a distinguished road

      0  

    Default


    Condor have you a fix for ExtJs 3.1 ?
    -->

  6. #16
    Sencha - Community Support Team Condor's Avatar
    Join Date
    Mar 2007
    Location
    The Netherlands
    Posts
    24,246
    Vote Rating
    96
    Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of

      0  

    Default


    Here's the Ext 3.1.0 override:
    Code:
    Ext.override(Ext.layout.BorderLayout.Region, {
        slideOut : function(){
            if(this.isSlid || this.el.hasActiveFx()){
                return;
            }
            this.isSlid = true;
            this.panel.isSlid = true;
            var ts = this.panel.tools;
            if(ts && ts.toggle){
                ts.toggle.hide();
            }
            this.el.show();
            if(this.position == 'east' || this.position == 'west'){
                this.panel.setSize(undefined, this.collapsedEl.getHeight());
            }else{
                this.panel.setSize(this.collapsedEl.getWidth(), undefined);
            }
            this.restoreLT = [this.el.dom.style.left, this.el.dom.style.top];
            this.el.alignTo(this.collapsedEl, this.getCollapseAnchor());
            this.el.setStyle("z-index", this.floatingZIndex+2);
            this.panel.el.replaceClass('x-panel-collapsed', 'x-panel-floating');
            if(this.animFloat !== false){
                this.beforeSlide();
                this.el.slideIn(this.getSlideAnchor(), {
                    callback: function(){
                        this.afterSlide();
                        this.initAutoHide();
                        Ext.getDoc().on("click", this.slideInIf, this);
                    },
                    scope: this,
                    block: true
                });
            }else{
                this.initAutoHide();
                 Ext.getDoc().on("click", this.slideInIf, this);
            }
        },
        afterSlideIn : function(){
            this.clearAutoHide();
            this.isSlid = false;
            delete this.panel.isSlid;
            this.clearMonitor();
            this.el.setStyle("z-index", "");
            this.panel.el.replaceClass('x-panel-floating', 'x-panel-collapsed');
            this.el.dom.style.left = this.restoreLT[0];
            this.el.dom.style.top = this.restoreLT[1];
            var ts = this.panel.tools;
            if(ts && ts.toggle){
                ts.toggle.show();
            }
        },
        slideIn : function(cb){
            if(!this.isSlid || this.el.hasActiveFx()){
                Ext.callback(cb);
                return;
            }
            this.isSlid = false;
            delete this.panel.isSlid;
            if(this.animFloat !== false){
                this.beforeSlide();
                this.el.slideOut(this.getSlideAnchor(), {
                    callback: function(){
                        this.el.hide();
                        this.afterSlide();
                        this.afterSlideIn();
                        Ext.callback(cb);
                    },
                    scope: this,
                    block: true
                });
            }else{
                this.el.hide();
                this.afterSlideIn();
            }
        }
    });
    Ext.override(Ext.Container, {
        doLayout: function(shallow, force){
            var rendered = this.rendered,
                forceLayout = force || this.forceLayout,
                cs, i, len, c;
            this.layoutDone = true;
            if(!this.canLayout() || (this.collapsed && !this.isSlid)){
                this.deferLayout = this.deferLayout || !shallow;
                if(!forceLayout){
                    return;
                }
                shallow = shallow && !this.deferLayout;
            } else {
                delete this.deferLayout;
            }
            cs = (shallow !== true && this.items) ? this.items.items : [];
            for(i = 0, len = cs.length; i < len; i++){
                if ((c = cs[i]).layout) {
                    c.suspendLayoutResize = true;
                }
            }
            if(rendered && this.layout){
                this.layout.layout();
            }
            for(i = 0; i < len; i++){
                if((c = cs[i]).doLayout){
                    c.doLayout(false, forceLayout);
                }
            }
            if(rendered){
                this.onLayout(shallow, forceLayout);
            }
            this.hasLayout = true;
            delete this.forceLayout;
            for(i = 0; i < len; i++){
                if ((c = cs[i]).layout) {
                    delete c.suspendLayoutResize;
                }
            }
        }
    });
    Ext.override(Ext.layout.ContainerLayout, {
        onResize: function(){
            var ct = this.container,
                b = ct.bufferResize;
            if (ct.collapsed && !ct.isSlid){
                return;
            }
            if (b && ct.ownerCt) {
                if (!ct.hasLayoutPending()){
                    if(!this.resizeTask){
                        this.resizeTask = new Ext.util.DelayedTask(this.runLayout, this);
                        this.resizeBuffer = Ext.isNumber(b) ? b : 50;
                    }
                    ct.layoutPending = true;
                    this.resizeTask.delay(this.resizeBuffer);
                }
            }else{
                ct.doLayout(false, this.forceLayout);
            }
        }
    });
    Ext.override(Ext.layout.FitLayout, {
        onLayout : function(ct, target){
            Ext.layout.FitLayout.superclass.onLayout.call(this, ct, target);
            if(!this.container.collapsed || this.container.isSlid){
                this.setItemSize(this.activeItem || ct.items.itemAt(0), target.getViewSize(true));
            }
        }
    });
    Ext.override(Ext.Panel, {
        onResize : function(w, h){
            if(Ext.isDefined(w) || Ext.isDefined(h)){
                if(!this.collapsed || this.isSlid){
                    if(Ext.isNumber(w)){
                        this.body.setWidth(w = this.adjustBodyWidth(w - this.getFrameWidth()));
                    } else if (w == 'auto') {
                        w = this.body.setWidth('auto').dom.offsetWidth;
                    } else {
                        w = this.body.dom.offsetWidth;
                    }
                    if(this.tbar){
                        this.tbar.setWidth(w);
                        if(this.topToolbar){
                            this.topToolbar.setSize(w);
                        }
                    }
                    if(this.bbar){
                        this.bbar.setWidth(w);
                        if(this.bottomToolbar){
                            this.bottomToolbar.setSize(w);
                            if (Ext.isIE) {
                                this.bbar.setStyle('position', 'static');
                                this.bbar.setStyle('position', '');
                            }
                        }
                    }
                    if(this.footer){
                        this.footer.setWidth(w);
                        if(this.fbar){
                            this.fbar.setSize(Ext.isIE ? (w - this.footer.getFrameWidth('lr')) : 'auto');
                        }
                    }
                    if(Ext.isNumber(h)){
                        h = Math.max(0, this.adjustBodyHeight(h - this.getFrameHeight()));
                        this.body.setHeight(h);
                    }else if(h == 'auto'){
                        this.body.setHeight(h);
                    }
                    if(this.disabled && this.el._mask){
                        this.el._mask.setSize(this.el.dom.clientWidth, this.el.getHeight());
                    }
                }else{
                    this.queuedBodySize = {width: w, height: h};
                    if(!this.queuedExpand && this.allowQueuedExpand !== false){
                        this.queuedExpand = true;
                        this.on('expand', function(){
                            delete this.queuedExpand;
                            this.onResize(this.queuedBodySize.width, this.queuedBodySize.height);
                        }, this, {single:true});
                    }
                }
                this.onBodyResize(w, h);
            }
            this.syncShadow();
            Ext.Panel.superclass.onResize.call(this);
        }
    });
    -->

  7. #17
    Ext User
    Join Date
    Feb 2009
    Posts
    56
    Vote Rating
    0
    uptodate is on a distinguished road

      0  

    Default


    thx condor this helps
    -->

  8. #18
    Ext User
    Join Date
    Feb 2009
    Posts
    56
    Vote Rating
    0
    uptodate is on a distinguished road

      0  

    Default


    when will this be fixed in svn ?
    -->

  9. #19
    Sencha User Jamie Avins's Avatar
    Join Date
    Mar 2007
    Location
    Redwood City, California
    Posts
    3,661
    Vote Rating
    18
    Jamie Avins is a jewel in the rough Jamie Avins is a jewel in the rough Jamie Avins is a jewel in the rough

      0  

    Default


    The sizing issues is already resolved in SVN. Doing a recursive layout for a slideout is under consideration.
    -->