From c3464076f1f27f06af187b5e923682095a9920b4 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 8 May 2019 12:46:33 +0200 Subject: ui: make window restoring and pop-up more aggressive Signed-off-by: Simon Rozman --- ui/raise.go | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'ui/raise.go') diff --git a/ui/raise.go b/ui/raise.go index feb04323..f902546e 100644 --- a/ui/raise.go +++ b/ui/raise.go @@ -7,23 +7,34 @@ package ui import ( "fmt" + "os" + "runtime" + "github.com/lxn/walk" "github.com/lxn/win" "golang.org/x/sys/windows" - "os" - "runtime" ) const wireguardUIClass = "WireGuard UI - MainWindow" +func raise(hwnd win.HWND) { + if win.IsIconic(hwnd) { + win.ShowWindow(hwnd, win.SW_RESTORE) + } + + win.SetActiveWindow(hwnd) + + win.SetWindowPos(hwnd, win.HWND_TOPMOST, 0, 0, 0, 0, win.SWP_NOMOVE|win.SWP_NOSIZE|win.SWP_SHOWWINDOW) + win.SetForegroundWindow(hwnd) + win.SetWindowPos(hwnd, win.HWND_NOTOPMOST, 0, 0, 0, 0, win.SWP_NOMOVE|win.SWP_NOSIZE|win.SWP_SHOWWINDOW) +} + func RaiseUI() bool { hwnd := win.FindWindow(windows.StringToUTF16Ptr(wireguardUIClass), nil) if hwnd == 0 { return false } - win.ShowWindow(hwnd, win.SW_NORMAL) - win.BringWindowToTop(hwnd) - win.SetForegroundWindow(hwnd) + raise(hwnd) return true } @@ -37,9 +48,7 @@ func WaitForRaiseUIThenQuit() { return 0 } win.UnhookWinEvent(handle) - win.ShowWindow(hwnd, win.SW_NORMAL) - win.BringWindowToTop(hwnd) - win.SetForegroundWindow(hwnd) + raise(hwnd) os.Exit(0) return 0 }, 0, 0, win.WINEVENT_SKIPOWNPROCESS|win.WINEVENT_OUTOFCONTEXT) -- cgit v1.2.3-59-g8ed1b