Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #7683: 7683.diff

File 7683.diff, 1.7 kB (added by savetheclocktower, 2 years ago)

Makes the test page work, but may need more testing

  • trunk/src/dom.js

    old new  
    346346    element = $(element); 
    347347    var display = $(element).getStyle('display'); 
    348348    if (display != 'none' && display != null) // Safari bug 
    349       return {width: element.offsetWidth, height: element.offsetHeight}; 
    350      
     349      return { width: element.offsetWidth, height: element.offsetHeight }; 
     350 
    351351    // All *Width and *Height properties give 0 on elements with display none, 
    352352    // so enable the element temporarily 
    353     var els = element.style; 
    354     var originalVisibility = els.visibility; 
    355     var originalPosition = els.position; 
    356     var originalDisplay = els.display; 
    357     els.visibility = 'hidden'; 
    358     els.position = 'absolute'; 
    359     els.display = 'block'; 
    360     var originalWidth = element.clientWidth; 
     353    var els = element.style, original = {}; 
     354 
     355    $w('display position visibility height width').each( function(name) { 
     356      original[name] = els[name]; 
     357    }); 
     358     
     359    els.visibility = 'hidden';     
     360    els.display    = 'block'; 
     361 
     362    Position.absolutize(element); 
     363    var originalWidth  = element.clientWidth; 
    361364    var originalHeight = element.clientHeight; 
    362     els.display = originalDisplay; 
    363     els.position = originalPosition; 
    364     els.visibility = originalVisibility; 
    365     return {width: originalWidth, height: originalHeight};     
     365    Position.relativize(element); 
     366 
     367    $w('display position visibility height width').each( function(name) { 
     368      els[name] = original[name] || ''; 
     369    }); 
     370    return { width: originalWidth, height: originalHeight };   
    366371  }, 
    367372   
    368373  makePositioned: function(element) {