Hi Eric, This looks flawless but the easiest way to know would be to test it. I would be glad to test this.
One thing to though is that a SelectFeature control can draw features depending on its renderIntent value OR selectStyle value. So, instead of storing the previous renderIntent, it could be the previous drawer ( i.e. control ) and call feature._previousdrawer.drawFeature(feature) and the previous control itself would draw the feature depending if it has a selectStyle or renderIntent. Your solution looks simple and great. It has this concept : this == current drawer feature._previousdrawer ( or previousrenderintent ) == the previous drawer With our 2 controls example that is enough. Plus, as long as we keep the selectedFeature array in the layer objet, there's no need to know more than "current" and "previous". If we have let's say ( silly ) 6 select features at the same time, having all their own colors, a feature is selected/highlighted and unselected/unhighlighted one at a time so "curent" and "previous" drawer is enough. With that in mind, no need for a "stack" of renderIntent or a "stack" of _previousDrawer. What do you think ? Alexandre Eric Lemoine wrote: > On Thu, Mar 5, 2009 at 5:09 PM, Alexandre Dube <ad...@mapgears.com> wrote: > >> Sorry, I should have written : >> >> Control #1, select on click, color: blue >> Control #2, highlight on hover, color: yellow, highlightOnly >> >> >> The problem is that control #2 : >> >> highlight a feature even if it's selected >> doesn't unhighlight a feature that is selected >> >> so, a blue-selected-feature becomes yellow, and then moving out it remains >> yellow. Do you see what I mean ? >> > > You are so right! > > How about that: unhighlight only if I'm the last drawer of the > feature, and unhighlight to the previous render intent. The > implementation would look like this: > > (1) the select feature control places a reference to itself in the > feature it is about to highlight (whether highlightOnly is set or not) > > feature._drawer = this; > this.layer.drawFeature(feature, selectStyle); > > (2) before highlighting a feature store in the feature it current renderIntent > > feature._previousRenderIntent = feature.renderIntent; > > (3) unhighlight only if I'm the last drawer of the feature > > if(feature._drawer == this) { > this.layer.drawFeature(feature, feature._previousRenderIntent); > } > > > It looks better to me, tell me if this is flawed again. > > Thanks for the collaboration on this Alexandre. > > -- > Eric > -- Alexandre Dubé Mapgears www.mapgears.com _______________________________________________ Dev mailing list Dev@openlayers.org http://openlayers.org/mailman/listinfo/dev