Fix right-click on downtime activities on macOS.

On macOS with a single-button mouse (e.g. a laptop trackpad) it's common to
trigger a right-click with ctrl+click.

In Chrome, this triggers both a `contextmenu` event and a regular `click`
event. In the context of downtime actions, this meant that we were
deselecting an action in the `contextmenu` handler but then immediately
re-selecting it again in the `click` handler.

This commit works around the problem by stopping the event from propagating
further. This fixes the bug, but also stops Foundry's default `contextmenu`
handler from firing and preventing the browser context menu from appearing,
so we also have prevent the event's default behaviour from firing.
This commit is contained in:
George Brocklehurst 2025-07-19 16:38:55 +01:00
parent 7b820d4c60
commit d60a6d2e08
No known key found for this signature in database
GPG key ID: 0C643A97B51FFCFB

View file

@ -119,6 +119,18 @@ export default class DhpDowntime extends HandlebarsApplicationMixin(ApplicationV
: 0; : 0;
this.render(); this.render();
// On macOS with a single-button mouse (e.g. a laptop trackpad),
// right-click is triggered with ctrl+click, which triggers both a
// `contextmenu` event and a regular click event. We need to stop
// event propagation to prevent the click event from triggering the
// `selectMove` function and undoing the change we just made.
event.stopPropagation();
// Having stopped propagation, we're no longer subject to Foundry's
// default `contextmenu` handler, so we also have to prevent the
// default behaviour to prevent a context menu from appearing.
event.preventDefault();
} }
static async takeDowntime() { static async takeDowntime() {