Hi,
the use-case is that we have two SelectFeature controls. One for selecting features to know to which feature add attributes the other one for highlighting features that already have certain attributes. So if you select some features and then highlight some features to see which one has an attribute then you unhighlight them to un-/select or assign some attributes the selection disappears. Selecting happens by clicking or a box, un-/highlight by hover over a row of a table ("legend"). And, if I remember correct, the selected features are still in selectedFeatures attribute of the layer. This leads, in best case, to a is confused user when some of the former selected features are not selected again and then attributes are assigned.
We have to thank you for the effort you all put into the project.
Regards
Slawomir

Am 09.05.2011 18:03, schrieb Eric Lemoine:
On Monday, May 9, 2011, Slawomir Messner
<slawomir.mess...@staff.uni-marburg.de>  wrote:
Hi,
I have a question. In the unhighlight function if another SelectFeature was the 
prevHighlighter it is set to the lastHighlighter but then the feature is simply redraw 
with it's own style/layer style or default renderIntent. Shouldn't this be only in the 
first to cases of the if-stmt? in the third like in outFeature that the highlight of the 
"new" lastHighlighter is used?
Here the code I'm talking about(Without the comments in it):

     unhighlight: function(feature) {
         var layer = feature.layer;
         if(feature._prevHighlighter == undefined) {
             delete feature._lastHighlighter;
         } else if(feature._prevHighlighter == this.id) {
             delete feature._prevHighlighter;
         } else {
             feature._lastHighlighter = feature._prevHighlighter;
             delete feature._prevHighlighter;
         }
          layer.drawFeature(feature, feature.style || feature.layer.style ||
                 "default");
         this.events.triggerEvent("featureunhighlighted", {feature : feature});
     },

Now how I think it should be:

unhighlight: function(feature) {
         var layer = feature.layer;
     var newHighlighter = null;
         if(feature._prevHighlighter == undefined) {
             delete feature._lastHighlighter;
         } else if(feature._prevHighlighter == this.id) {
             delete feature._prevHighlighter;
         } else {
             feature._lastHighlighter = feature._prevHighlighter;
             delete feature._prevHighlighter;
             newHighlighter = this.map.getControl(feature._lastHighlighter);
         }
         if(newHighlighter != null) {
             newHighlighter.highlight(feature);
         } else {
             layer.drawFeature(feature, feature.style || feature.layer.style ||
                 "default");
             this.events.triggerEvent("featureunhighlighted", {feature : 
feature});
         }
},
When I look at the code of highlight the "featureunhighlighted" should always thrown to a 
symmetric behavior of un-/highlight or the "featurehighlighted" event should only be 
triggered in the highlight when there was no _lastHighlighter.

Hi

I'd like to know your exact use-case (control1 does this, control2
does that, etc.). With that we should be able to write a test-case
demonstrating that the current code doesn't behave as expected.

Thanks for your effort on that. It's not trivial code.





_______________________________________________
Dev mailing list
d...@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-dev

Reply via email to