Make it so the measurepartial event is triggered only if measure isn't coming soon. This keeps you from having to do a quadruple click to finish in IE when a reflow is triggered by the measurepartial listener. r=crschmidt (closes #2037)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9263 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -76,6 +76,23 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
metric: ['km', 'm']
|
metric: ['km', 'm']
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property: delay
|
||||||
|
* {Number} Number of milliseconds between clicks before the event is
|
||||||
|
* considered a double-click. The "measurepartial" event will not
|
||||||
|
* be triggered if the sketch is completed within this time. This
|
||||||
|
* is required for IE where creating a browser reflow (if a listener
|
||||||
|
* is modifying the DOM by displaying the measurement values) messes
|
||||||
|
* with the dblclick listener in the sketch handler.
|
||||||
|
*/
|
||||||
|
partialDelay: 300,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property: delayedTrigger
|
||||||
|
* {Number} Timeout id of trigger for measurepartial.
|
||||||
|
*/
|
||||||
|
delayedTrigger: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIProperty: persist
|
* APIProperty: persist
|
||||||
* {Boolean} Keep the temporary measurement sketch drawn after the
|
* {Boolean} Keep the temporary measurement sketch drawn after the
|
||||||
@@ -147,6 +164,9 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
* geometry - {<OpenLayers.Geometry>}
|
* geometry - {<OpenLayers.Geometry>}
|
||||||
*/
|
*/
|
||||||
measureComplete: function(geometry) {
|
measureComplete: function(geometry) {
|
||||||
|
if(this.delayedTrigger) {
|
||||||
|
window.clearTimeout(this.delayedTrigger);
|
||||||
|
}
|
||||||
this.measure(geometry, "measure");
|
this.measure(geometry, "measure");
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -159,7 +179,12 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
* geometry - {<OpenLayers.Geometry>} The sketch geometry.
|
* geometry - {<OpenLayers.Geometry>} The sketch geometry.
|
||||||
*/
|
*/
|
||||||
measurePartial: function(point, geometry) {
|
measurePartial: function(point, geometry) {
|
||||||
this.measure(geometry, "measurepartial");
|
this.delayedTrigger = window.setTimeout(
|
||||||
|
OpenLayers.Function.bind(function() {
|
||||||
|
this.measure(geometry, "measurepartial");
|
||||||
|
}, this),
|
||||||
|
this.partialDelay
|
||||||
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user