From de255729e6d160b29a51b9de15acf0380968910f Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sun, 15 Aug 2021 20:17:58 +1000 Subject: [PATCH] [windows-x] Support window drag --- v2/internal/frontend/windows/frontend.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/v2/internal/frontend/windows/frontend.go b/v2/internal/frontend/windows/frontend.go index e11d2d2c8..4204864a1 100644 --- a/v2/internal/frontend/windows/frontend.go +++ b/v2/internal/frontend/windows/frontend.go @@ -3,8 +3,10 @@ package windows import ( "context" "encoding/json" + "fmt" "github.com/jchv/go-webview2/pkg/edge" "github.com/tadvi/winc" + "github.com/tadvi/winc/w32" "github.com/wailsapp/wails/v2/internal/binding" "github.com/wailsapp/wails/v2/internal/frontend" "github.com/wailsapp/wails/v2/internal/frontend/assetserver" @@ -215,6 +217,13 @@ func (f *Frontend) processRequest(req *edge.ICoreWebView2WebResourceRequest, arg func (f *Frontend) processMessage(message string) { println("msg:", message) + if message == "drag" { + err := f.startDrag() + if err != nil { + f.logger.Error(err.Error()) + } + return + } err := f.dispatcher.ProcessMessage(message) if err != nil { f.logger.Error(err.Error()) @@ -227,6 +236,14 @@ func (f *Frontend) Callback(message string) { }) } +func (f *Frontend) startDrag() error { + if !w32.ReleaseCapture() { + return fmt.Errorf("unable to release mouse capture") + } + w32.SendMessage(f.mainWindow.Handle(), w32.WM_NCLBUTTONDOWN, w32.HTCAPTION, 0) + return nil +} + func NewFrontend(appoptions *options.App, myLogger *logger.Logger, appBindings *binding.Bindings, dispatcher frontend.Dispatcher) *Frontend { result := &Frontend{