From f8f466ba7e49aed0ec60d12b069e177d9d5316b9 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sat, 6 May 2023 20:22:28 +1000 Subject: [PATCH] [v3 windows] Support irregular shaped windows. Centered option. --- v3/pkg/application/options_webview_window.go | 3 ++- v3/pkg/application/options_win.go | 3 ++- v3/pkg/application/webview_window.go | 1 + v3/pkg/application/webview_window_windows.go | 9 ++++++++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/v3/pkg/application/options_webview_window.go b/v3/pkg/application/options_webview_window.go index be053794..f4454eb5 100644 --- a/v3/pkg/application/options_webview_window.go +++ b/v3/pkg/application/options_webview_window.go @@ -23,7 +23,7 @@ type WebviewWindowOptions struct { MaxWidth int MaxHeight int StartState WindowState - Mac MacWindow + Centered bool BackgroundType BackgroundType BackgroundColour RGBA HTML string @@ -37,6 +37,7 @@ type WebviewWindowOptions struct { EnableFraudulentWebsiteWarnings bool Zoom float64 EnableDragAndDrop bool + Mac MacWindow Windows WindowsWindow } diff --git a/v3/pkg/application/options_win.go b/v3/pkg/application/options_win.go index 27cb3789..6e640d3e 100644 --- a/v3/pkg/application/options_win.go +++ b/v3/pkg/application/options_win.go @@ -33,7 +33,8 @@ type WindowsWindow struct { DisableFramelessWindowDecorations bool // WindowMask is used to set the window shape. Use a PNG with an alpha channel to create a custom shape. - WindowMask []byte + WindowMask []byte + WindowMaskDraggable bool } type Theme int diff --git a/v3/pkg/application/webview_window.go b/v3/pkg/application/webview_window.go index 1537cd8b..8a88d529 100644 --- a/v3/pkg/application/webview_window.go +++ b/v3/pkg/application/webview_window.go @@ -446,6 +446,7 @@ func (w *WebviewWindow) handleMessage(message string) { // Center centers the window on the screen func (w *WebviewWindow) Center() { if w.impl == nil { + w.options.Centered = true return } invokeSync(w.impl.center) diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index eb0b8d7f..b196c363 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -185,6 +185,10 @@ func (w *windowsWebviewWindow) run() { w.setWindowMask(options.Windows.WindowMask) } + if options.Centered { + w.center() + } + w.setForeground() if !options.Hidden { @@ -649,7 +653,10 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp if w.parent.options.Windows.WindowMask != nil { switch msg { case w32.WM_NCHITTEST: - return w32.HTCAPTION + if w.parent.options.Windows.WindowMaskDraggable { + return w32.HTCAPTION + } + return w32.HTCLIENT } }