OpenLayers OpenLayers

Changeset 7671

Show
Ignore:
Timestamp:
08/01/08 17:35:35 (4 months ago)
Author:
ahocevar
Message:

fixed event handling and rendering of graphicName symbols for Safari and Opera. r=crschmidt (closes #1653)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Renderer/Elements.js

    r7652 r7671  
    693693     */ 
    694694    getFeatureIdFromEvent: function(evt) { 
    695         var node = evt.target || evt.srcElement; 
    696         return node._featureId; 
     695        var target = evt.target; 
     696        var useElement = target && target.correspondingUseElement; 
     697        var node = useElement ? useElement : (target || evt.srcElement); 
     698        var featureId = node._featureId; 
     699        return featureId; 
    697700    }, 
    698701 
  • trunk/openlayers/lib/OpenLayers/Renderer/SVG.js

    r7670 r7671  
    251251                if (node.getAttributeNS(this.xlinkns, "href") != href) { 
    252252                    node.setAttributeNS(this.xlinkns, "href", href); 
     253                } else if (size != parseFloat(node.getAttributeNS(null, "width"))) { 
     254                    // hide the element (and force a reflow so it really gets 
     255                    // hidden. This workaround is needed for Safari. 
     256                    node.style.visibility = "hidden"; 
     257                    this.container.scrollLeft = this.container.scrollLeft; 
    253258                } 
    254259                node.setAttributeNS(null, "width", size); 
     
    256261                node.setAttributeNS(null, "x", pos.x - offset); 
    257262                node.setAttributeNS(null, "y", pos.y - offset); 
     263                // set the visibility back to normal (after the Safari 
     264                // workaround above) 
     265                node.style.visibility = ""; 
    258266            } else { 
    259267                node.setAttributeNS(null, "r", style.pointRadius);