aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/raise.go
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2019-05-08 12:46:33 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-08 19:47:08 +0200
commitc3464076f1f27f06af187b5e923682095a9920b4 (patch)
treeb664f6b3587832bba30459638609db977a7350dd /ui/raise.go
parentui: confview: do not poll when minimized (diff)
downloadwireguard-windows-c3464076f1f27f06af187b5e923682095a9920b4.tar.xz
wireguard-windows-c3464076f1f27f06af187b5e923682095a9920b4.zip
ui: make window restoring and pop-up more aggressive
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'ui/raise.go')
-rw-r--r--ui/raise.go25
1 files changed, 17 insertions, 8 deletions
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)