make it so features are not selected if there are multiple touches in the touchstart event, r=bbinet (closes #3279)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11948 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Éric Lemoine
2011-05-04 10:37:09 +00:00
parent 8f70a140d0
commit 17f2843317
2 changed files with 60 additions and 1 deletions

View File

@@ -147,7 +147,8 @@ OpenLayers.Handler.Feature = OpenLayers.Class(OpenLayers.Handler, {
scope: this
});
}
return this.mousedown(evt);
return OpenLayers.Event.isMultiTouch(evt) ?
true : this.mousedown(evt);
},
/**

View File

@@ -588,6 +588,64 @@
t.eq(clicks, 0, "click callback does not trigger when tolerance is reached");
}
function test_multitouch_canvas(t) {
var supported = OpenLayers.Renderer.Canvas.prototype.supported();
if (!supported) { t.plan(0); return; }
t.plan(1);
// set up
var log;
var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.Vector('vectors', {
renderers: ['Canvas'],
isBaseLayer: true
});
map.addLayer(layer);
var control = new OpenLayers.Control();
var handler = new OpenLayers.Handler.Feature(control, layer,
{click: function() { log++; }});
control.handler = handler;
map.addControl(control);
control.activate();
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(0, 0));
layer.addFeatures(feature);
map.zoomToMaxExtent();
// test
// mock getMousePosition on the events object to make
// sure scrolls, offsets and leftop do not interfere
map.events.getMousePosition = function(evt) {
return new OpenLayers.Pixel(evt.clientX,
evt.clientY);
};
log = 0;
var evt = {
type: 'touchstart',
touches: [{
clientX: 100,
clientY: 75
}, {
clientX: 200,
clientY: 75
}]
};
map.events.handleBrowserEvent(evt);
t.eq(log, 0, "no feature selection when multi-touching");
// tear down
map.destroy();
}
</script>
</head>
<body>