Control.GetFeature should abort requests with protocol.abort() instead of response.priv.abort(), r=ahocevar (closes #1999)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9165 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -135,11 +135,11 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
handlers: null,
|
handlers: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Property: hoverRequest
|
* Property: hoverResponse
|
||||||
* {<OpenLayers.Request>} contains the currently running hover request
|
* {<OpenLayers.Protocol.Response>} The response object associated with
|
||||||
* (if any).
|
* the currently running hover request (if any).
|
||||||
*/
|
*/
|
||||||
hoverRequest: null,
|
hoverResponse: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constant: EVENT_TYPES
|
* Constant: EVENT_TYPES
|
||||||
@@ -324,9 +324,9 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
* Callback from the handlers.hover set up when <hover> selection is on
|
* Callback from the handlers.hover set up when <hover> selection is on
|
||||||
*/
|
*/
|
||||||
cancelHover: function() {
|
cancelHover: function() {
|
||||||
if (this.hoverRequest) {
|
if (this.hoverResponse) {
|
||||||
this.hoverRequest.abort();
|
this.protocol.abort(this.hoverResponse);
|
||||||
this.hoverRequest = null;
|
this.hoverResponse = null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -378,7 +378,7 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
scope: this
|
scope: this
|
||||||
});
|
});
|
||||||
if(options.hover == true) {
|
if(options.hover == true) {
|
||||||
this.hoverRequest = response.priv;
|
this.hoverResponse = response;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function test_Control_GetFeature_hover(t) {
|
function test_Control_GetFeature_hover(t) {
|
||||||
t.plan(3);
|
t.plan(6);
|
||||||
|
var abortedResponse = null;
|
||||||
var map = new OpenLayers.Map("map");
|
var map = new OpenLayers.Map("map");
|
||||||
var layer = new OpenLayers.Layer.WMS("foo", "wms", {
|
var layer = new OpenLayers.Layer.WMS("foo", "wms", {
|
||||||
layers: "foo"
|
layers: "foo"
|
||||||
@@ -65,6 +66,7 @@
|
|||||||
map.setCenter(new OpenLayers.LonLat(1,2));
|
map.setCenter(new OpenLayers.LonLat(1,2));
|
||||||
var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2));
|
var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2));
|
||||||
var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(2,3));
|
var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(2,3));
|
||||||
|
var response = new OpenLayers.Protocol.Response();
|
||||||
var control = new OpenLayers.Control.GetFeature({
|
var control = new OpenLayers.Control.GetFeature({
|
||||||
protocol: new OpenLayers.Protocol({
|
protocol: new OpenLayers.Protocol({
|
||||||
read: function(obj){
|
read: function(obj){
|
||||||
@@ -72,7 +74,10 @@
|
|||||||
features: [feature1, feature2],
|
features: [feature1, feature2],
|
||||||
code: 1
|
code: 1
|
||||||
});
|
});
|
||||||
return {priv: {}};
|
return response;
|
||||||
|
},
|
||||||
|
abort: function(response) {
|
||||||
|
abortedResponse = response;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
hover: true
|
hover: true
|
||||||
@@ -90,8 +95,17 @@
|
|||||||
control.events.register("outfeature", this, outTest);
|
control.events.register("outfeature", this, outTest);
|
||||||
hoverFeature = feature1;
|
hoverFeature = feature1;
|
||||||
control.selectHover({xy: new OpenLayers.Pixel(200, 125)});
|
control.selectHover({xy: new OpenLayers.Pixel(200, 125)});
|
||||||
|
t.ok(control.hoverResponse == response,
|
||||||
|
"selectHover stores the protocol response in the hoverResponse property");
|
||||||
|
|
||||||
hoverFeature = feature2;
|
hoverFeature = feature2;
|
||||||
control.selectHover({xy: new OpenLayers.Pixel(400, 0)});
|
control.selectHover({xy: new OpenLayers.Pixel(400, 0)});
|
||||||
|
control.cancelHover();
|
||||||
|
t.ok(abortedResponse == response,
|
||||||
|
"cancelHover calls protocol.abort() with the expected response");
|
||||||
|
t.eq(control.hoverResponse, null,
|
||||||
|
"cancelHover sets this.hoverResponse to null");
|
||||||
|
|
||||||
control.events.unregister("hoverfeature", this, hoverTest);
|
control.events.unregister("hoverfeature", this, hoverTest);
|
||||||
control.events.unregister("outfeature", this, outTest);
|
control.events.unregister("outfeature", this, outTest);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user