Thank you for reporting this bug. We will make it our priority to review this report.
  1. #1
    Sencha User
    Join Date
    Nov 2010
    Posts
    27
    Vote Rating
    0
    Diavololt is on a distinguished road

      0  

    Default [FIXED][4.1 RC1] layouts problems in chrome18 (fixed in RC3)

    [FIXED][4.1 RC1] layouts problems in chrome18 (fixed in RC3)


    OPEN
    Ext version tested:
    • 4.1 B3
    • 4.1 RC1
    Browser versions tested against:
    • Chrome 18
    Problem description:

    extjs/examples/layout/accordion.html

    After some clicks on accordion items or resize west region, the panel is broken. See a picture.


    P.S. CLEAN browser cache first.


    extjs_panel_bug.jpg

    P.S2: After chrome 18 update my components like accordion, tabpanel (inside Ext.panel.Panel), fill blue after clicks on items or add/remove some tabs.

    static/extjs/examples/layout/border.html
    extjs_panel_bug2.jpg

    Last edited by Diavololt; 12 Apr 2012 at 3:40 AM. Reason: FIXED

  2. #2
    Ext JS Premium Member tvanzoelen's Avatar
    Join Date
    Apr 2008
    Location
    Groningen - Netherlands
    Posts
    1,118
    Vote Rating
    30
    tvanzoelen has a spectacular aura about tvanzoelen has a spectacular aura about tvanzoelen has a spectacular aura about

      0  

    Default


    Fix in post no. 22 by rhapsodyv http://www.sencha.com/forum/showthre...me-18-19/page3 seems to have a little effect but does not fix all issues.

    Code:
    Ext.override(Ext.layout.ContextItem, {
        setHeight: function (height, dirty ) {
            var me = this,
                comp = me.target,
                frameBody, frameInfo, padding;
    
            if(isNaN(height)){
                return;
            }
    
            if (height < 0) {
                height = 0;
            }
            if (!me.wrapsComponent) {
                if (!me.setProp('height', height, dirty)) {
                    return NaN;
                }
            } else {
                height = Ext.Number.constrain(height, comp.minHeight || 0, comp.maxHeight);
                if (!me.setProp('height', height, dirty)) {
                    return NaN;
                }
    
                frameBody = me.frameBodyContext;
                if (frameBody){
                    frameInfo = me.getFrameInfo();
                    frameBody.setHeight(height - frameInfo.height, dirty);
                }
            }
    
            return height;
        },
    
        
        setWidth: function (width, dirty ) {
            var me = this,
                comp = me.target,
                frameBody, frameInfo, padding;
    
    
            if(isNaN(width)){
                return;
            }
            
            if (width < 0) {
                width = 0;
            }
            if (!me.wrapsComponent) {
                if (!me.setProp('width', width, dirty)) {
                    return NaN;
                }
            } else {
                width = Ext.Number.constrain(width, comp.minWidth || 0, comp.maxWidth);
                if (!me.setProp('width', width, dirty)) {
                    return NaN;
                }
    
                
                frameBody = me.frameBodyContext;
                if (frameBody) {
                    frameInfo = me.getFrameInfo();
                    frameBody.setWidth(width - frameInfo.width, dirty);
                }
    
                
            }
    
            return width;
        }
    });

  3. #3
    Sencha User
    Join Date
    Nov 2010
    Posts
    27
    Vote Rating
    0
    Diavololt is on a distinguished road

      0  

    Default


    Thanks for quick reply and solution. It seems, with this override, now working fine.

  4. #4
    Sencha - Ext JS Dev Team Animal's Avatar
    Join Date
    Mar 2007
    Location
    Notts/Redwood City
    Posts
    30,507
    Vote Rating
    56
    Animal has a spectacular aura about Animal has a spectacular aura about Animal has a spectacular aura about

      0  

    Default


    So, I think I've tracked it down to a V8 bug which I've reported here: http://code.google.com/p/v8/issues/detail?id=2056

    We can work around this - I'll have an update in Ext.Number.constrain soon.

    I didn't want to just put those patches in without finding out what was happening.

  5. #5
    Sencha User
    Join Date
    Dec 2011
    Posts
    32
    Vote Rating
    1
    rhapsodyv is on a distinguished road

      0  

    Default


    Crazy!! Math.max(NaN, 0) === 0 in Chrome!! :-p

  6. #6
    Sencha User
    Join Date
    Sep 2010
    Posts
    72
    Vote Rating
    0
    JanVenekamp is on a distinguished road

      0  

    Default


    In my ext-fixes.js:

    Code:
    /*
     * Chrome 18+ Math.max/min(NaN, 0) === 0 BUG
     *
     * http://www.sencha.com/forum/showthread.php?192517-OPEN-4.1-RC1-layouts-problems-in-chrome18&p=771679&viewfull=1#post771679
     */
    Ext.Number.constrain = function(number, min, max) {
        number = parseFloat(number);
    
        if (isNaN(number)) {
            return NaN;
        }
        if (!isNaN(min)) {
            number = Math.max(number, min);
        }
        if (!isNaN(max)) {
            number = Math.min(number, max);
        }
        return number;
    };

  7. #7
    Sencha Premium Member karlsnyder0's Avatar
    Join Date
    Mar 2010
    Location
    Maryland, USA
    Posts
    82
    Vote Rating
    12
    karlsnyder0 is on a distinguished road

      0  

    Thumbs up


    Quote Originally Posted by JanVenekamp View Post
    In my ext-fixes.js:

    Code:
    /*
     * Chrome 18+ Math.max/min(NaN, 0) === 0 BUG
     *
     * http://www.sencha.com/forum/showthread.php?192517-OPEN-4.1-RC1-layouts-problems-in-chrome18&p=771679&viewfull=1#post771679
     */
    Ext.Number.constrain = function(number, min, max) {
        number = parseFloat(number);
    
        if (isNaN(number)) {
            return NaN;
        }
        if (!isNaN(min)) {
            number = Math.max(number, min);
        }
        if (!isNaN(max)) {
            number = Math.min(number, max);
        }
        return number;
    };
    And all this time I thought it was something I did.

    This workaround appears to work for me. Thanks! And thank you Animal for reporting to Google their goof.

  8. #8
    Sencha User ludoo's Avatar
    Join Date
    Mar 2007
    Location
    France, Luxembourg
    Posts
    60
    Vote Rating
    2
    ludoo is on a distinguished road

      0  

    Default


    Strange fix but it fixes all my troubles about layout resizing on toolbar and panel's body in chrome 18 too with 4.1RC2.

    Thanks !

  9. #9
    Sencha User
    Join Date
    Nov 2010
    Posts
    27
    Vote Rating
    0
    Diavololt is on a distinguished road

      0  

    Default


    In 4.1.0 RC3 this problem has been fixed. Thanks!