From f66607a6e860d39a6a8a46a6cf6003f2f76fbb28 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Tue, 4 May 2010 09:41:25 +0000 Subject: [PATCH] reverted r10125, which does not fix the described issue, and store style.display instead (first patch attached to #2414). r=bartvde,elemoine (pullup #2414) git-svn-id: http://svn.openlayers.org/trunk/openlayers@10276 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/BaseTypes/Element.js | 1 - lib/OpenLayers/Map.js | 6 ++++++ tests/BaseTypes/Element.html | 31 +++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) 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;