Skip to content

Commit 23a1444

Browse files
Fix failing layout test case in Opera.
1 parent 87b2fda commit 23a1444

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/dom/layout.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,14 @@
307307
var position = element.getStyle('position'),
308308
width = element.getStyle('width');
309309

310+
if (width === "0px" || width === null) {
311+
// Opera won't report the true width of the element through
312+
// `getComputedStyle` if it's hidden. If we got a nonsensical value,
313+
// we need to show the element and try again.
314+
element.style.display = 'block';
315+
width = element.getStyle('width');
316+
}
317+
310318
// Preserve the context in case we get a percentage value.
311319
var context = (position === 'fixed') ? document.viewport :
312320
element.parentNode;

test/unit/layout_test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ new Test.Unit.Runner({
3939
'test layout on elements with display: none and exact width': function() {
4040
var layout = $('box2').getLayout();
4141

42-
this.assert(!isDisplayed($('box3')), 'box should be hidden');
42+
this.assert(!isDisplayed($('box2')), 'box should be hidden');
4343

4444
this.assertEqual(500, layout.get('width'), 'width');
4545
this.assertEqual( 3, layout.get('border-right'), 'border-right');
4646
this.assertEqual( 10, layout.get('padding-bottom'), 'padding-bottom');
4747
this.assertEqual(526, layout.get('border-box-width'), 'border-box-width');
4848

49-
this.assert(!isDisplayed($('box3')), 'box should still be hidden');
49+
this.assert(!isDisplayed($('box2')), 'box should still be hidden');
5050
},
5151

5252
'test layout on elements with negative margins': function() {

0 commit comments

Comments
 (0)