From 4254d1efdf9bf37b6b03ee0fa9d7a84b09e33c6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 1 Apr 2009 16:25:35 +0000 Subject: [PATCH] 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 --- lib/OpenLayers/Control/GetFeature.js | 18 +++++++++--------- tests/Control/GetFeature.html | 18 ++++++++++++++++-- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/OpenLayers/Control/GetFeature.js b/lib/OpenLayers/Control/GetFeature.js index 6950b265ff..836b98480e 100644 --- a/lib/OpenLayers/Control/GetFeature.js +++ b/lib/OpenLayers/Control/GetFeature.js @@ -133,13 +133,13 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, { * instances. */ handlers: null, - + /** - * Property: hoverRequest - * {} contains the currently running hover request - * (if any). + * Property: hoverResponse + * {} The response object associated with + * the currently running hover request (if any). */ - hoverRequest: null, + hoverResponse: null, /** * Constant: EVENT_TYPES @@ -324,9 +324,9 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, { * Callback from the handlers.hover set up when selection is on */ cancelHover: function() { - if (this.hoverRequest) { - this.hoverRequest.abort(); - this.hoverRequest = null; + if (this.hoverResponse) { + this.protocol.abort(this.hoverResponse); + this.hoverResponse = null; } }, @@ -378,7 +378,7 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, { scope: this }); if(options.hover == true) { - this.hoverRequest = response.priv; + this.hoverResponse = response; } }, diff --git a/tests/Control/GetFeature.html b/tests/Control/GetFeature.html index 75803bccaf..6951425ac6 100644 --- a/tests/Control/GetFeature.html +++ b/tests/Control/GetFeature.html @@ -56,7 +56,8 @@ } function test_Control_GetFeature_hover(t) { - t.plan(3); + t.plan(6); + var abortedResponse = null; var map = new OpenLayers.Map("map"); var layer = new OpenLayers.Layer.WMS("foo", "wms", { layers: "foo" @@ -65,6 +66,7 @@ map.setCenter(new OpenLayers.LonLat(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 response = new OpenLayers.Protocol.Response(); var control = new OpenLayers.Control.GetFeature({ protocol: new OpenLayers.Protocol({ read: function(obj){ @@ -72,7 +74,10 @@ features: [feature1, feature2], code: 1 }); - return {priv: {}}; + return response; + }, + abort: function(response) { + abortedResponse = response; } }), hover: true @@ -90,8 +95,17 @@ control.events.register("outfeature", this, outTest); hoverFeature = feature1; control.selectHover({xy: new OpenLayers.Pixel(200, 125)}); + t.ok(control.hoverResponse == response, + "selectHover stores the protocol response in the hoverResponse property"); + hoverFeature = feature2; 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("outfeature", this, outTest); }