diff --git a/lib/OpenLayers/Popup.js b/lib/OpenLayers/Popup.js
index 99816fe8dc..76df7a4fc6 100644
--- a/lib/OpenLayers/Popup.js
+++ b/lib/OpenLayers/Popup.js
@@ -506,7 +506,7 @@ OpenLayers.Popup = OpenLayers.Class({
// contents into a fake contentDiv (for the CSS) and then measuring it
var preparedHTML = "
" +
this.contentDiv.innerHTML +
- "
";
+ "
";
var containerElement = (this.map) ? this.map.layerContainerDiv
: document.body;
diff --git a/lib/OpenLayers/Util.js b/lib/OpenLayers/Util.js
index d31c1dc6fb..5709773a1a 100644
--- a/lib/OpenLayers/Util.js
+++ b/lib/OpenLayers/Util.js
@@ -1540,9 +1540,7 @@ OpenLayers.Util.getRenderedDimensions = function(contentHTML, size, options) {
// create temp container div with restricted size
var container = document.createElement("div");
- container.style.overflow= "";
- container.style.position = "absolute";
- container.style.left = "-9999px";
+ container.style.visibility = "hidden";
var containerElement = (options && options.containerElement)
? options.containerElement : document.body;
@@ -1567,12 +1565,40 @@ OpenLayers.Util.getRenderedDimensions = function(contentHTML, size, options) {
var content = document.createElement("div");
content.innerHTML = contentHTML;
+ // we need overflow visible when calculating the size
+ content.style.overflow = "visible";
+ if (content.childNodes) {
+ for (var i=0, l=content.childNodes.length; i
Content");
var bigger = OpenLayers.Util.getRenderedDimensions("Content
", null, {displayClass: 'testDims'});
+ var overflow = OpenLayers.Util.getRenderedDimensions("Content
");
+ var width = OpenLayers.Util.getRenderedDimensions("Content
", new OpenLayers.Size(250, null));
+ var height = OpenLayers.Util.getRenderedDimensions("Content
", new OpenLayers.Size(null, 40));
if ((size.w + 40) == bigger.w && (size.h + 40) == bigger.h) {
- out.innerHTML = "Pass: " + size + ", " + bigger;
+ out.innerHTML = "bigger Pass: " + size + ", " + bigger;
} else {
- out.innerHTML = "Fail: " + size + ", " + bigger;
+ out.innerHTML = "bigger Fail: " + size + ", " + bigger;
+ }
+
+ if (size.w == overflow.w && size.h == overflow.h) {
+ out.innerHTML += "
overflow Pass: " + size + ", " + overflow;
+ } else {
+ out.innerHTML += "
overflow Fail: " + size + ", " + overflow;
+ }
+
+ if (width.w == 250 && width.h == size.h) {
+ out.innerHTML += "
width Pass: " + size + ", " + width;
+ }
+ else {
+ out.innerHTML += "
width Fail: " + size + ", " + width;
+ }
+
+ if (height.h == 40 && height.w == size.w) {
+ out.innerHTML += "
height Pass: " + size + ", " + height;
+ }
+ else {
+ out.innerHTML += "
height Fail: " + size + ", " + height;
}
}