diff --git a/lib/OpenLayers/BaseTypes/Element.js b/lib/OpenLayers/BaseTypes/Element.js index 8c9383ced1..2b31ca29c3 100644 --- a/lib/OpenLayers/BaseTypes/Element.js +++ b/lib/OpenLayers/BaseTypes/Element.js @@ -93,7 +93,6 @@ OpenLayers.Element = { /** * APIFunction: getDimensions - * *Deprecated*. Returns dimensions of the element passed in. * * Parameters: * element - {DOMElement} diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 82e801e868..971cbbc1dc 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -1402,6 +1402,12 @@ OpenLayers.Map = OpenLayers.Class({ var size = new OpenLayers.Size(this.div.clientWidth, this.div.clientHeight); + // Workaround for the fact that hidden elements return 0 for size. + if (size.w == 0 && size.h == 0 || isNaN(size.w) && isNaN(size.h)) { + var dim = OpenLayers.Element.getDimensions(this.div); + size.w = dim.width; + size.h = dim.height; + } if (size.w == 0 && size.h == 0 || isNaN(size.w) && isNaN(size.h)) { size.w = parseInt(this.div.style.width); size.h = parseInt(this.div.style.height); diff --git a/tests/BaseTypes/Element.html b/tests/BaseTypes/Element.html index ddc95b7b24..8a5a1abc40 100644 --- a/tests/BaseTypes/Element.html +++ b/tests/BaseTypes/Element.html @@ -110,6 +110,37 @@ t.ok(OpenLayers.Element.getHeight(elem) == elem.offsetHeight, "offsetHeight returned"); } + function test_Element_getDimensions(t) { + if (!t.open_window) { + t.plan(0); + return; + } else { + t.plan(4); + } + + //shown + t.open_window( "BaseTypes/Element.html", function( wnd ) { + t.delay_call(3, function() { + var elem = wnd.document.getElementById("elemID"); + + var dims = OpenLayers.Element.getDimensions(elem); + t.eq(dims.width, 50, "width correct when displayed"); + t.eq(dims.height, 100, "height correct when displayed") + + elem.style.display = "none"; + dims = OpenLayers.Element.getDimensions(elem); + t.eq(dims.width, 50, "width correct when hidden"); + t.eq(dims.height, 100, "height correct when hidden") + + + }); + }); + + //hidden + + + } + function test_hasClass(t) { t.plan(14); var has = OpenLayers.Element.hasClass;