diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-14 14:14:57 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-14 14:18:23 +0200 |
commit | 43708b6af9f4bb3f1b1ca603521171acd57cc820 (patch) | |
tree | 11e3f5698022ec90971886ff03fa9c4240ae3b6b /ui/managewindow.go | |
parent | ui: centralize state labels (diff) | |
download | wireguard-windows-43708b6af9f4bb3f1b1ca603521171acd57cc820.tar.xz wireguard-windows-43708b6af9f4bb3f1b1ca603521171acd57cc820.zip |
ui: show overlay in pinned taskbar
This means the window icon no longer changes, which sucks, especially
for servercore, but it means that the taskbar shows something useful on
Windows 10.
Diffstat (limited to '')
-rw-r--r-- | ui/managewindow.go | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/ui/managewindow.go b/ui/managewindow.go index cd42e58a..a1f9aa83 100644 --- a/ui/managewindow.go +++ b/ui/managewindow.go @@ -23,8 +23,7 @@ type ManageTunnelsWindow struct { logPage *LogPage updatePage *UpdatePage - tunnelChangedCB *service.TunnelChangeCallback - taskbarButtonCreated bool + tunnelChangedCB *service.TunnelChangeCallback } const ( @@ -142,17 +141,18 @@ func (mtw *ManageTunnelsWindow) updateProgressIndicator(globalState service.Tunn default: pi.SetState(walk.PINoProgress) } + if icon, err := iconForState(globalState, mtw.DPI()/6); err == nil { //TODO: calculate DPI dynamically + if globalState == service.TunnelStopped { + icon = nil + } + pi.SetOverlayIcon(icon, textForState(globalState, false)) + } } func (mtw *ManageTunnelsWindow) onTunnelChange(tunnel *service.Tunnel, state service.TunnelState, globalState service.TunnelState, err error) { mtw.Synchronize(func() { mtw.updateProgressIndicator(globalState) - icon, err2 := iconWithOverlayForState(globalState, mtw.DPI()/3) //TODO: calculate DPI dynamically - if err2 == nil { - mtw.SetIcon(icon) - } - if err != nil && mtw.Visible() { errMsg := err.Error() if len(errMsg) > 0 && errMsg[len(errMsg)-1] != '.' { @@ -204,13 +204,14 @@ func (mtw *ManageTunnelsWindow) WndProc(hwnd win.HWND, msg uint32, wParam, lPara return 0 case taskbarButtonCreatedMsg: ret := mtw.FormBase.WndProc(hwnd, msg, wParam, lParam) - if !mtw.taskbarButtonCreated { - mtw.taskbarButtonCreated = true + go func() { globalState, err := service.IPCClientGlobalState() if err == nil { - mtw.updateProgressIndicator(globalState) + mtw.Synchronize(func() { + mtw.updateProgressIndicator(globalState) + }) } - } + }() return ret } |