By default, the click handler now has a zero pixelTolerance. This means we don't call click if the click includes a drag. Set pixelTolerance to null if you want click called with a drag. r=crschmidt (closes #1335)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@6066 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2008-02-08 03:24:42 +00:00
parent fba4528c9a
commit 99f3fa0d26
3 changed files with 12 additions and 12 deletions
+6 -6
View File
@@ -38,7 +38,7 @@
defaultHandlerOptions: { defaultHandlerOptions: {
'single': true, 'single': true,
'double': false, 'double': false,
'pixelTolerance': null, 'pixelTolerance': 0,
'stopSingle': false, 'stopSingle': false,
'stopDouble': false 'stopDouble': false
}, },
@@ -102,10 +102,10 @@
"double": true "double": true
} }
}), }),
"nodrag": new OpenLayers.Control.Click({ "drag": new OpenLayers.Control.Click({
handlerOptions: { handlerOptions: {
"single": true, "single": true,
"pixelTolerance": 1 "pixelTolerance": null
} }
}), }),
"stopsingle": new OpenLayers.Control.Click({ "stopsingle": new OpenLayers.Control.Click({
@@ -204,9 +204,9 @@
<td><textarea class="output" id="bothOutput"></textarea></td> <td><textarea class="output" id="bothOutput"></textarea></td>
</tr> </tr>
<tr> <tr>
<td>single no drag</td> <td>single with drag</td>
<td><button id="nodragStatus" onclick="toggle('nodrag')">off</button></td> <td><button id="dragStatus" onclick="toggle('drag')">off</button></td>
<td><textarea class="output" id="nodragOutput"></textarea></td> <td><textarea class="output" id="dragOutput"></textarea></td>
</tr> </tr>
<tr> <tr>
<td>single with stop</td> <td>single with stop</td>
+3 -3
View File
@@ -45,12 +45,12 @@ OpenLayers.Handler.Click = OpenLayers.Class(OpenLayers.Handler, {
/** /**
* APIProperty: pixelTolerance * APIProperty: pixelTolerance
* {Number} Maximum number of pixels between mouseup and mousedown for an * {Number} Maximum number of pixels between mouseup and mousedown for an
* event to be considered a click. Default is null. If set to an * event to be considered a click. Default is 0. If set to an
* integer value, clicks with a drag greater than the value will be * integer value, clicks with a drag greater than the value will be
* ignored. This property can only be set when the handler is * ignored. This property can only be set when the handler is
* constructed. * constructed.
*/ */
pixelTolerance: null, pixelTolerance: 0,
/** /**
* APIProperty: stopSingle * APIProperty: stopSingle
@@ -182,7 +182,7 @@ OpenLayers.Handler.Click = OpenLayers.Class(OpenLayers.Handler, {
*/ */
passesTolerance: function(evt) { passesTolerance: function(evt) {
var passes = true; var passes = true;
if(this.pixelTolerance && this.down) { if(this.pixelTolerance != null && this.down) {
var dpx = Math.sqrt( var dpx = Math.sqrt(
Math.pow(this.down.x - evt.xy.x, 2) + Math.pow(this.down.x - evt.xy.x, 2) +
Math.pow(this.down.y - evt.xy.y, 2) Math.pow(this.down.y - evt.xy.y, 2)
+3 -3
View File
@@ -43,7 +43,7 @@
} }
function test_Handler_Click_events(t) { function test_Handler_Click_events(t) {
t.plan(30); t.plan(35);
var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map('map');
var control = { var control = {
@@ -72,8 +72,8 @@
// list below events that should be handled (events) and those // list below events that should be handled (events) and those
// that should not be handled (nonevents) by the handler // that should not be handled (nonevents) by the handler
var events = ["click", "dblclick"]; var events = ["click", "dblclick", "mousedown"];
var nonevents = ["mousedown", "mousemove", "mouseup", "resize", "focus", "blur"]; var nonevents = ["mousemove", "mouseup", "resize", "focus", "blur"];
var handler = new OpenLayers.Handler.Click(control); var handler = new OpenLayers.Handler.Click(control);
// set browser event like properties on the handler // set browser event like properties on the handler
for(var i=0; i<events.length; ++i) { for(var i=0; i<events.length; ++i) {