aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/iconprovider.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-05-02 20:59:37 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-02 20:59:52 +0200
commitea71836cd25750983e8ebec91da8bffa5937484b (patch)
treec5a4116088be7422f7cb165e4a05aff9df6d1329 /ui/iconprovider.go
parentupdater: use /qb!- instead of /qb- (diff)
downloadwireguard-windows-ea71836cd25750983e8ebec91da8bffa5937484b.tar.xz
wireguard-windows-ea71836cd25750983e8ebec91da8bffa5937484b.zip
ui: use system icons in toolbar
Diffstat (limited to 'ui/iconprovider.go')
-rw-r--r--ui/iconprovider.go16
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)
+}