diff --git a/v3/pkg/application/webview_window.go b/v3/pkg/application/webview_window.go index 248efd7fd..0e4f4e436 100644 --- a/v3/pkg/application/webview_window.go +++ b/v3/pkg/application/webview_window.go @@ -1094,6 +1094,25 @@ func (w *WebviewWindow) HandleDragAndDropMessage(filenames []string) { } } +func (w *WebviewWindow) OpenContextMenu(data *ContextMenuData) { + menu, ok := w.contextMenus[data.Id] + if !ok { + // try application level context menu + menu, ok = globalApplication.getContextMenu(data.Id) + if !ok { + w.Error("No context menu found for id: %s", data.Id) + return + } + } + menu.setContextData(data) + if w.impl == nil && !w.isDestroyed() { + return + } + InvokeSync(func() { + w.impl.openContextMenu(menu, data) + }) +} + // RegisterContextMenu registers a context menu and assigns it the given name. func (w *WebviewWindow) RegisterContextMenu(name string, menu *Menu) { w.contextMenusLock.Lock() diff --git a/v3/pkg/application/window.go b/v3/pkg/application/window.go index 100ea5728..57b85dbfa 100644 --- a/v3/pkg/application/window.go +++ b/v3/pkg/application/window.go @@ -44,6 +44,7 @@ type Window interface { Minimise() Window Name() string On(eventType events.WindowEventType, callback func(event *WindowEvent)) func() + OpenContextMenu(data *ContextMenuData) RegisterContextMenu(name string, menu *Menu) RelativePosition() (int, int) Reload()