From 40fdf75042ff45015d27e153bc92c3ae06bc1a53 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sat, 21 Nov 2020 20:32:55 +1100 Subject: [PATCH] Disable context menu in production mode --- v2/internal/ffenestri/ffenestri.go | 2 -- v2/internal/ffenestri/ffenestri_darwin.c | 11 ++++++++++- v2/internal/runtime/js/core/main.js | 3 ++- v2/internal/runtime/js/core/utils.js | 6 ++++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/v2/internal/ffenestri/ffenestri.go b/v2/internal/ffenestri/ffenestri.go index 86f56bc0e..f23c6a4e5 100644 --- a/v2/internal/ffenestri/ffenestri.go +++ b/v2/internal/ffenestri/ffenestri.go @@ -113,8 +113,6 @@ func (a *Application) Run(incomingDispatcher Dispatcher, bindings string, debug fullscreen := a.bool2Cint(a.config.Fullscreen) startHidden := a.bool2Cint(a.config.StartHidden) logLevel := C.int(a.config.LogLevel) - println("debug = ", debug) - println("devtools = ", a.config.DevTools) app := C.NewApplication(title, width, height, resizable, devtools, fullscreen, startHidden, logLevel) // Save app reference diff --git a/v2/internal/ffenestri/ffenestri_darwin.c b/v2/internal/ffenestri/ffenestri_darwin.c index af322b5b6..d99fb4737 100644 --- a/v2/internal/ffenestri/ffenestri_darwin.c +++ b/v2/internal/ffenestri/ffenestri_darwin.c @@ -1016,6 +1016,13 @@ void Run(struct Application *app, int argc, char **argv) { index++; }; + // Disable context menu if not in debug mode + if( debug != 1 ) { + temp = concat(internalCode, "wails._.DisableContextMenu();"); + free((void*)internalCode); + internalCode = temp; + } + // class_addMethod(delegateClass, s("applicationWillFinishLaunching:"), (IMP) willFinishLaunching, "@@:@"); // Include callback after evaluation temp = concat(internalCode, "webkit.messageHandlers.completed.postMessage(true);"); @@ -1024,7 +1031,7 @@ void Run(struct Application *app, int argc, char **argv) { // const char *viewportScriptString = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); meta.setAttribute('initial-scale', '1.0'); meta.setAttribute('maximum-scale', '1.0'); meta.setAttribute('minimum-scale', '1.0'); meta.setAttribute('user-scalable', 'no'); document.getElementsByTagName('head')[0].appendChild(meta);"; // ExecJS(app, viewportScriptString); - + // This evaluates the MOAE once the Dom has finished loading msg(manager, @@ -1035,6 +1042,8 @@ void Run(struct Application *app, int argc, char **argv) { 1, 1)); + + if( app->webviewIsTranparent == 1 ) { msg(wkwebview, s("setValue:forKey:"), msg(c("NSNumber"), s("numberWithBool:"), 0), str("drawsBackground")); } diff --git a/v2/internal/runtime/js/core/main.js b/v2/internal/runtime/js/core/main.js index f3185fb0e..618109e97 100644 --- a/v2/internal/runtime/js/core/main.js +++ b/v2/internal/runtime/js/core/main.js @@ -14,7 +14,7 @@ import * as Window from './window'; import * as Dialog from './dialog'; import { On, Once, OnMultiple, Emit, Notify } from './events'; import { Callback, SystemCall } from './calls'; -import { AddScript, InjectCSS } from './utils'; +import { AddScript, InjectCSS, DisableContextMenu } from './utils'; import { AddIPCListener } from 'ipc'; import * as Platform from 'platform'; import * as Store from './store'; @@ -41,6 +41,7 @@ export function Init() { Notify, AddScript, InjectCSS, + DisableContextMenu, // Init, AddIPCListener, SystemCall, diff --git a/v2/internal/runtime/js/core/utils.js b/v2/internal/runtime/js/core/utils.js index 89ef1d7d6..545853bb1 100644 --- a/v2/internal/runtime/js/core/utils.js +++ b/v2/internal/runtime/js/core/utils.js @@ -36,3 +36,9 @@ export function InjectCSS(css) { console.log(e); } } + +export function DisableContextMenu() { + AddScript('function contextMenu(event) { event.preventDefault(); }'); + var body = document.getElementsByTagName('body')[0]; + body.setAttribute('oncontextmenu', 'contextMenu(event)'); +}