From 120d59f0e195c2c05ad846b557d6dd6e4c07d09b Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 11 Mar 2011 19:28:55 +0000 Subject: [PATCH] reverting r11645, and fixing the root of the reported problem. r=bartvde (closes #2392) git-svn-id: http://svn.openlayers.org/trunk/openlayers@11697 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Map.js | 11 ----------- lib/OpenLayers/Renderer/SVG.js | 16 ++++++++-------- lib/OpenLayers/Renderer/SVG2.js | 16 ++++++++-------- 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index c5a2c63e7b..b1e32945b4 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -510,12 +510,6 @@ OpenLayers.Map = OpenLayers.Class({ this.div = document.createElement("div"); this.div.style.height = "1px"; this.div.style.width = "1px"; - - // Adding this to the DOM is a fix for Safari SVG rendering bugs; - // See #2392. On initial render(), it is removed from the dom, - // and a new div is added. - this.div.style.display = "none"; - document.body.appendChild(this.div); } OpenLayers.Element.addClass(this.div, 'olMap'); @@ -650,11 +644,6 @@ OpenLayers.Map = OpenLayers.Class({ * will be moved from the current to the new container. */ render: function(div) { - // Fix for Safari SVG rendering bugs; See #2392 - if(this.div && this.div.parentNode) { - this.div.parentNode.removeChild(this.div); - } - this.div = OpenLayers.Util.getElement(div); OpenLayers.Element.addClass(this.div, 'olMap'); this.viewPortDiv.parentNode.removeChild(this.viewPortDiv); diff --git a/lib/OpenLayers/Renderer/SVG.js b/lib/OpenLayers/Renderer/SVG.js index 9972a0dbe2..a5cfc34d1f 100644 --- a/lib/OpenLayers/Renderer/SVG.js +++ b/lib/OpenLayers/Renderer/SVG.js @@ -290,9 +290,9 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { // the symbol viewBox is three times as large as the symbol var offset = style.pointRadius * 3; var size = offset * 2; - var id = this.importSymbol(style.graphicName); + var src = this.importSymbol(style.graphicName); pos = this.getPosition(node); - widthFactor = this.symbolMetrics[id][0] * 3 / size; + widthFactor = this.symbolMetrics[src.id][0] * 3 / size; // remove the node from the dom before we modify it. This // prevents various rendering issues in Safari and FF @@ -308,7 +308,6 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { // See e.g. ticket http://trac.osgeo.org/openlayers/ticket/2985 // and this email thread // http://osgeo-org.1803224.n2.nabble.com/Select-Control-Ctrl-click-on-Feature-with-a-graphicName-opens-new-browser-window-tc5846039.html - var src = document.getElementById(id); node.firstChild && node.removeChild(node.firstChild); node.appendChild(src.firstChild.cloneNode(true)); node.setAttributeNS(null, "viewBox", src.getAttributeNS(null, "viewBox")); @@ -339,7 +338,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { "rotate(" + rotation + " " + pos.x + " " + pos.y + ")"); } else { - var metrics = this.symbolMetrics[id]; + var metrics = this.symbolMetrics[src.id]; node.firstChild.setAttributeNS(null, "transform", "rotate(" + rotation + " " + metrics[1] + " " @@ -881,7 +880,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { * graphicName - {String} name of the symbol to import * * Returns: - * {String} - id of the imported symbol + * {DOMElement} - the imported symbol */ importSymbol: function (graphicName) { if (!this.defs) { @@ -891,8 +890,9 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { var id = this.container.id + "-" + graphicName; // check if symbol already exists in the defs - if (document.getElementById(id) != null) { - return id; + var existing = document.getElementById(id) + if (existing != null) { + return existing; } var symbol = OpenLayers.Renderer.symbol[graphicName]; @@ -934,7 +934,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { ]; this.defs.appendChild(symbolNode); - return symbolNode.id; + return symbolNode; }, /** diff --git a/lib/OpenLayers/Renderer/SVG2.js b/lib/OpenLayers/Renderer/SVG2.js index cb792da774..af55e2ea89 100644 --- a/lib/OpenLayers/Renderer/SVG2.js +++ b/lib/OpenLayers/Renderer/SVG2.js @@ -217,8 +217,8 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, { // the symbol viewBox is three times as large as the symbol var offset = style.pointRadius * 3 * resolution; var size = offset * 2; - var id = this.importSymbol(style.graphicName); - widthFactor = this.symbolMetrics[id].size * 3 / size * resolution; + var src = this.importSymbol(style.graphicName); + widthFactor = this.symbolMetrics[src.id].size * 3 / size * resolution; // remove the node from the dom before we modify it. This // prevents various rendering issues in Safari and FF @@ -234,7 +234,6 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, { // See e.g. ticket http://trac.osgeo.org/openlayers/ticket/2985 // and this email thread // http://osgeo-org.1803224.n2.nabble.com/Select-Control-Ctrl-click-on-Feature-with-a-graphicName-opens-new-browser-window-tc5846039.html - var src = document.getElementById(id); node.firstChild && node.removeChild(node.firstChild); node.appendChild(src.firstChild.cloneNode(true)); node.setAttributeNS(null, "viewBox", src.getAttributeNS(null, "viewBox")); @@ -264,7 +263,7 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, { ["rotate(", rotation, node._x, node._y, ")"].join(" ") ); } else { - var metrics = this.symbolMetrics[id]; + var metrics = this.symbolMetrics[src.id]; node.firstChild.setAttributeNS(null, "transform", ["rotate(", rotation, metrics.x, metrics.y, ")"].join(" ") ); @@ -679,7 +678,7 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, { * graphicName - {String} name of the symbol to import * * Returns: - * {String} - id of the imported symbol + * {DOMElement} - the imported symbol */ importSymbol: function (graphicName) { if (!this.defs) { @@ -689,8 +688,9 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, { var id = this.container.id + "-" + graphicName; // check if symbol already exists in the defs - if (document.getElementById(id) != null) { - return id; + var existing = document.getElementById(id); + if (existing != null) { + return existing; } var symbol = OpenLayers.Renderer.symbol[graphicName]; @@ -732,7 +732,7 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, { }; this.defs.appendChild(symbolNode); - return symbolNode.id; + return symbolNode; }, /**