diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-02 20:59:37 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-02 20:59:52 +0200 |
commit | 4b1a01a8cbc5a00c4eed2497dd1552eba5ccac82 (patch) | |
tree | c5a4116088be7422f7cb165e4a05aff9df6d1329 /ui/iconprovider.go | |
parent | updater: use /qb!- instead of /qb- (diff) | |
download | wireguard-windows-4b1a01a8cbc5a00c4eed2497dd1552eba5ccac82.tar.xz wireguard-windows-4b1a01a8cbc5a00c4eed2497dd1552eba5ccac82.zip |
ui: use system icons in toolbar
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/iconprovider.go')
-rw-r--r-- | ui/iconprovider.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/ui/iconprovider.go b/ui/iconprovider.go index 5ebf93bb..b56a4a5b 100644 --- a/ui/iconprovider.go +++ b/ui/iconprovider.go @@ -6,8 +6,12 @@ package ui import ( + "fmt" "github.com/lxn/walk" + "github.com/lxn/win" + "golang.org/x/sys/windows" "golang.zx2c4.com/wireguard/windows/service" + "path" ) type rectAndState struct { @@ -229,3 +233,15 @@ func (tsip *IconProvider) PaintForState(state service.TunnelState, canvas *walk. return nil } + +func loadSystemIcon(dll string, index uint) (*walk.Icon, error) { + system32, err := windows.GetSystemDirectory() + if err != nil { + return nil, err + } + hicon := win.ExtractIcon(win.GetModuleHandle(nil), windows.StringToUTF16Ptr(path.Join(system32, dll+".dll")), int32(index)) + if hicon <= 1 { + return nil, fmt.Errorf("Unable to find icon %d of %s", index, dll) + } + return walk.NewIconFromHICON(hicon) +} |