If no measurement has been performed yet before dropping the token, schedule a measurement on drop (fixes #153)

This commit is contained in:
Manuel Vögele
2022-02-09 10:30:17 +01:00
parent 96cb690431
commit fb3665d758
+5
View File
@@ -97,6 +97,7 @@ async function tokenLayerUndoHistory(wrapped) {
function onEntityLeftDragStart(wrapped, event) { function onEntityLeftDragStart(wrapped, event) {
wrapped(event); wrapped(event);
console.warn("start", Date.now());
const isToken = this instanceof Token; const isToken = this instanceof Token;
const ruler = canvas.controls.ruler const ruler = canvas.controls.ruler
ruler.draggedEntity = this; ruler.draggedEntity = this;
@@ -127,6 +128,7 @@ function onEntityLeftDragMove(wrapped, event) {
function onEntityDragLeftDrop(event) { function onEntityDragLeftDrop(event) {
const ruler = canvas.controls.ruler const ruler = canvas.controls.ruler
console.warn("stop", ruler._state, Date.now());
if (!ruler.isDragRuler) { if (!ruler.isDragRuler) {
ruler.draggedEntity = undefined; ruler.draggedEntity = undefined;
return false return false
@@ -137,6 +139,9 @@ function onEntityDragLeftDrop(event) {
// This can happen if the user presses ESC during drag (maybe there are other ways too) // This can happen if the user presses ESC during drag (maybe there are other ways too)
if (selectedTokens.length === 0) if (selectedTokens.length === 0)
selectedTokens.push(ruler.draggedEntity); selectedTokens.push(ruler.draggedEntity);
// This can happen if the ruler is being dragged so rapidly that the drag move handler hasn't been called before dropping
if (ruler._state === Ruler.STATES.STARTING)
onMouseMove.call(ruler, event);
ruler._state = Ruler.STATES.MOVING ruler._state = Ruler.STATES.MOVING
moveEntities.call(ruler, ruler.draggedEntity, selectedTokens); moveEntities.call(ruler, ruler.draggedEntity, selectedTokens);
return true return true