From 668da3a8275ef5480146d27a60b09909021149e9 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 8 Feb 2022 06:20:41 +1100 Subject: [PATCH] [linux] Fix disabling context menu --- v2/internal/frontend/desktop/linux/window.go | 30 ++++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/v2/internal/frontend/desktop/linux/window.go b/v2/internal/frontend/desktop/linux/window.go index 1167fb0b..86ac7cde 100644 --- a/v2/internal/frontend/desktop/linux/window.go +++ b/v2/internal/frontend/desktop/linux/window.go @@ -120,6 +120,7 @@ ulong setupInvokeSignal(void* contentManager) { float xroot = 0.0f; float yroot = 0.0f; int dragTime = -1; +bool contextMenuDisabled = false; gboolean buttonPress(GtkWidget *widget, GdkEventButton *event, void* dummy) { @@ -128,12 +129,18 @@ gboolean buttonPress(GtkWidget *widget, GdkEventButton *event, void* dummy) dragTime = -1; return FALSE; } + + if( event->button == 3 && contextMenuDisabled ) { + return TRUE; + } + if (event->type == GDK_BUTTON_PRESS && event->button == 1) { xroot = event->x_root; yroot = event->y_root; dragTime = event->time; } + return FALSE; } @@ -448,29 +455,38 @@ void SetPosition(void* window, int x, int y) { } void Show(gpointer data) { - gtk_widget_show((GTKWidget*)data); + gtk_widget_show((GtkWidget*)data); } void Hide(gpointer data) { - gtk_widget_hide((GTKWidget*)data); + gtk_widget_hide((GtkWidget*)data); } void Maximise(gpointer data) { - gtk_window_maximize((GTKWindow*)data); + gtk_window_maximize((GtkWindow*)data); } void UnMaximise(gpointer data) { - gtk_window_unmaximize((GTKWindow*)data); + gtk_window_unmaximize((GtkWindow*)data); } void Minimise(gpointer data) { - gtk_window_iconify((GTKWindow*)data); + gtk_window_iconify((GtkWindow*)data); } void UnMinimise(gpointer data) { - gtk_window_present((GTKWindow*)data); + gtk_window_present((GtkWindow*)data); } +bool disableContextMenu(GtkWindow* window) { + return TRUE; +} +void DisableContextMenu(void* webview) { + contextMenuDisabled = TRUE; + g_signal_connect(WEBKIT_WEB_VIEW(webview), "context-menu", G_CALLBACK(disableContextMenu), NULL); +} + + */ import "C" import ( @@ -535,6 +551,8 @@ func NewWindow(appoptions *options.App, debug bool) *Window { if debug { C.devtoolsEnabled(unsafe.Pointer(webview), C.int(1)) + } else { + C.DisableContextMenu(unsafe.Pointer(webview)) } // Set background colour