diff --git a/web/packages/core/src/config.ts b/web/packages/core/src/config.ts index 55cd0afdf..1c1326a20 100644 --- a/web/packages/core/src/config.ts +++ b/web/packages/core/src/config.ts @@ -22,6 +22,7 @@ export const DEFAULT_CONFIG: Required = { logLevel: LogLevel.Error, showSwfDownload: false, contextMenu: true, + touchContextMenu: true, // Backwards-compatibility option preloader: true, splashScreen: true, diff --git a/web/packages/core/src/load-options.ts b/web/packages/core/src/load-options.ts index 9fdd21306..4343f1880 100644 --- a/web/packages/core/src/load-options.ts +++ b/web/packages/core/src/load-options.ts @@ -338,6 +338,14 @@ export interface BaseLoadOptions { */ contextMenu?: boolean; + /** + * Whether or not to show a context menu when long-pressing + * a Ruffle instance on touch devices. + * + * @default true + */ + touchContextMenu?: boolean; + /** * Whether or not to show a splash screen before the SWF has loaded with Ruffle (backwards-compatibility). * diff --git a/web/packages/core/src/ruffle-player.ts b/web/packages/core/src/ruffle-player.ts index 4b3507a6a..3d8b5a5c9 100644 --- a/web/packages/core/src/ruffle-player.ts +++ b/web/packages/core/src/ruffle-player.ts @@ -1335,6 +1335,9 @@ export class RufflePlayer extends HTMLElement { if ( (this.loadedConfig && this.loadedConfig.contextMenu === false) || + (this.isTouch && + this.loadedConfig && + this.loadedConfig.touchContextMenu === false) || this.contextMenuForceDisabled ) { return;