OpenLayers OpenLayers

Changeset 7647

Show
Ignore:
Timestamp:
07/31/08 16:40:00 (4 months ago)
Author:
euzuro
Message:

Fix for non auto-size popups that were progressively expanding each time they were opened. a little investigation showed us that there was some unfortunate ambiguity with the 'size' property, which was alternatively being used as 'size' and 'contentSize'. cheers to seb for an elegant solution r=cr5,me (Closes #1586)

Files:

Legend:

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

    r6718 r7647  
    4949 
    5050    /**  
     51     * Property: contentSize  
     52     * {<OpenLayers.Size>} the width and height of the content. 
     53     */ 
     54    contentSize: null,     
     55 
     56    /**  
    5157     * Property: size  
    5258     * {<OpenLayers.Size>} the width and height of the popup. 
     
    172178    * lonlat - {<OpenLayers.LonLat>}  The position on the map the popup will 
    173179    *                                 be shown. 
    174     * size - {<OpenLayers.Size>}      The size of the popup
     180    * contentSize - {<OpenLayers.Size>}      The size of the content
    175181    * contentHTML - {String}          The HTML content to display inside the  
    176182    *                                 popup. 
     
    179185    * closeBoxCallback - {Function}   Function to be called on closeBox click. 
    180186    */ 
    181     initialize:function(id, lonlat, size, contentHTML, closeBox, closeBoxCallback) { 
     187    initialize:function(id, lonlat, contentSize, contentHTML, closeBox, closeBoxCallback) { 
    182188        if (id == null) { 
    183189            id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_"); 
     
    186192        this.id = id; 
    187193        this.lonlat = lonlat; 
    188         this.size = (size != null) ? size  
     194         
     195        this.contentSize = (contentSize != null) ? contentSize  
    189196                                  : new OpenLayers.Size( 
    190197                                                   OpenLayers.Popup.WIDTH, 
    191198                                                   OpenLayers.Popup.HEIGHT); 
     199         
    192200        if (contentHTML != null) {  
    193201             this.contentHTML = contentHTML; 
     
    207215 
    208216        var id = this.div.id + "_contentDiv"; 
    209         this.contentDiv = OpenLayers.Util.createDiv(id, null, this.size.clone(),  
     217        this.contentDiv = OpenLayers.Util.createDiv(id, null, this.contentSize.clone(),  
    210218                                                    null, "relative"); 
    211219        this.contentDiv.className = 'olPopupContent';                                             
     
    299307 
    300308        this.moveTo(px); 
    301         if (!this.autoSize) { 
    302             this.setSize(this.size); 
     309        if (!this.autoSize && !this.size) { 
     310            this.setSize(this.contentSize); 
    303311        } 
    304312        this.setBackgroundColor(); 
     
    391399     *     (in pixels). 
    392400     */ 
    393     setSize:function(size) {  
    394         this.size = size;  
    395  
    396         var contentSize = this.size.clone(); 
     401    setSize:function(contentSize) {  
     402        this.size = contentSize.clone();  
    397403         
    398404        // if our contentDiv has a css 'padding' set on it by a stylesheet, we  
     
    422428        // me want to shoot someone, but so it goes. 
    423429        if (OpenLayers.Util.getBrowserName() == "msie") { 
    424             contentSize.w += contentDivPadding.left + contentDivPadding.right; 
    425             contentSize.h += contentDivPadding.bottom + contentDivPadding.top; 
     430            this.contentSize.w += contentDivPadding.left + contentDivPadding.right; 
     431            this.contentSize.h += contentDivPadding.bottom + contentDivPadding.top; 
    426432        } 
    427433 
  • trunk/openlayers/lib/OpenLayers/Popup/Anchored.js

    r6911 r7647  
    165165    calculateNewPx:function(px) { 
    166166        var newPx = px.offset(this.anchor.offset); 
     167         
     168        //use contentSize if size is not already set 
     169        var size = this.size || this.contentSize; 
    167170 
    168171        var top = (this.relativePosition.charAt(0) == 't'); 
    169         newPx.y += (top) ? -this.size.h : this.anchor.size.h; 
     172        newPx.y += (top) ? -size.h : this.anchor.size.h; 
    170173         
    171174        var left = (this.relativePosition.charAt(1) == 'l'); 
    172         newPx.x += (left) ? -this.size.w : this.anchor.size.w; 
     175        newPx.x += (left) ? -size.w : this.anchor.size.w; 
    173176 
    174177        return newPx;    
  • trunk/openlayers/tests/Popup.html

    r6725 r7647  
    1717             "valid default popupid"); 
    1818        var firstID = popup.id; 
    19         t.ok(popup.size.equals(size), "good default popup.size"); 
     19        t.ok(popup.contentSize.equals(size), "good default popup.size"); 
    2020        t.eq(popup.contentHTML, "", "good default popup.contentHTML"); 
    2121        t.eq(popup.backgroundColor, OpenLayers.Popup.COLOR, "good default popup.backgroundColor"); 
     
    5555        t.eq(popup.id, id, "popup.id set correctly"); 
    5656        t.ok(popup.lonlat.equals(ll), "popup.lonlat set correctly"); 
    57         t.ok(popup.size.equals(sz), "popup.size set correctly"); 
     57        t.ok(popup.contentSize.equals(sz), "popup.size set correctly"); 
    5858        t.eq(popup.contentHTML, content, "contentHTML porpoerty of set correctly"); 
    5959