From 6e70f14ca79946e9588727290c7cc40ec6f9a962 Mon Sep 17 00:00:00 2001 From: Chris Ryan Date: Fri, 14 Nov 2025 11:54:02 +1000 Subject: [PATCH] Better state handling for buttons, etc. --- module/canvas/placeables/templateLayer.mjs | 59 ++++++++-------------- module/documents/templateManager.mjs | 6 ++- 2 files changed, 24 insertions(+), 41 deletions(-) diff --git a/module/canvas/placeables/templateLayer.mjs b/module/canvas/placeables/templateLayer.mjs index a8b5de2d..74fb031a 100644 --- a/module/canvas/placeables/templateLayer.mjs +++ b/module/canvas/placeables/templateLayer.mjs @@ -72,7 +72,7 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer order: 6, title: 'CONTROLS.Presets', icon: 'fa-solid fa-stamp', - onChange: (event, active) => DhTemplateLayer.handlePreset(event, active), + onChange: (event) => DhTemplateLayer.handlePreset(event), button: true }, settings: { @@ -80,7 +80,7 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer order: 7, title: 'CONTROLS.PresetsSettings', icon: 'fa-solid fa-gear', - onChange: (event, active) => DhTemplateLayer.handlePresetSettings(event, active), + onChange: (event) => DhTemplateLayer.handlePresetSettings(event), button: true }, clear: { @@ -97,49 +97,30 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer }; } - static handlePresetSettings(event, active) { - console.log("Preset settings handling goes here, event, active is: ", event, active); - if (active) { - ui.presetTemplates.open(); - // if (CONFIG.ux.TemplateManager.getActivePreview()) { - // return; - // } - // const { width, height } = game.canvas.scene.dimensions; - // const data = { - // x: width / 2, - // y: height / 2, - // t: 'circle', - // distance: 30, - // fillColor: '#FF0000' - // }; - - // CONFIG.ux.TemplateManager.createPreview(data); - } else { - ui.presetTemplates.close(); - // CONFIG.ux.TemplateManager.cancelActivePreview(event); - } + static handlePresetSettings(event) { + console.log("Preset settings handling goes here, event, active is: ", event); + ui.presetTemplates.open(); } static handlePreset(event, active) { console.log("Preset handling goes here, event, active is: ", event, active); - if (active) { - if (CONFIG.ux.TemplateManager.getActivePreview()) { - return; - } - const { width, height } = game.canvas.scene.dimensions; - const data = { - x: width / 2, - y: height / 2, - t: 'circle', - distance: 30, - fillColor: '#FF0000' - }; - - CONFIG.ux.TemplateManager.createPreview(data); - } else { - CONFIG.ux.TemplateManager.cancelActivePreview(event); + if (game.activeTool) { + ui.controls.activate("toggles"); } + // if (CONFIG.ux.TemplateManager.getActivePreview()) { + // return; + // } + const { width, height } = game.canvas.scene.dimensions; + const data = { + x: width / 2, + y: height / 2, + t: 'circle', + distance: 30, + fillColor: game.user.color || '#FF0000' + }; + + CONFIG.ux.TemplateManager.createPreview(data); } _onDragLeftStart(event) { diff --git a/module/documents/templateManager.mjs b/module/documents/templateManager.mjs index 091ee4e6..879a3596 100644 --- a/module/documents/templateManager.mjs +++ b/module/documents/templateManager.mjs @@ -95,6 +95,8 @@ export default class DhTemplateManager { canvas.stage.off('mousedown', mousedown); canvas.app.view.removeEventListener('contextmenu', contextmenu); canvas.app.view.removeEventListener('wheel', wheel); + + this.#activePreview = undefined; } /** @@ -103,9 +105,9 @@ export default class DhTemplateManager { */ #confirmTemplate(event) { event.stopPropagation(); + const docObject = this.#activePreview.document.toObject(); + canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [docObject]); this.#cancelTemplate(event); - - canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [this.#activePreview.document.toObject()]); this.#activePreview = undefined; }