diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-03 11:26:36 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-03 11:46:46 +0200 |
commit | cb9f45980daefcbf09f5211eaf4c3d42a96ceb4b (patch) | |
tree | 295b4535c8bae427088a2fb6d7bbf2aa6871cc87 /ui/listview.go | |
parent | ui: better manage window size (diff) | |
download | wireguard-windows-cb9f45980daefcbf09f5211eaf4c3d42a96ceb4b.tar.xz wireguard-windows-cb9f45980daefcbf09f5211eaf4c3d42a96ceb4b.zip |
ui: fix up confview ticker and list sync logic
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/listview.go')
-rw-r--r-- | ui/listview.go | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/ui/listview.go b/ui/listview.go index 4d196bba..78e53fda 100644 --- a/ui/listview.go +++ b/ui/listview.go @@ -68,10 +68,6 @@ func NewListView(parent walk.Container) (*ListView, error) { tv.SetDoubleBuffering(true) model := new(ListModel) - if model.tunnels, err = service.IPCClientTunnels(); err != nil { - return nil, err - } - tv.SetModel(model) tv.SetLastColumnStretched(true) tv.SetHeaderHidden(true) @@ -88,7 +84,6 @@ func NewListView(parent walk.Container) (*ListView, error) { tunnelsView.tunnelChangedCB = service.IPCClientRegisterTunnelChange(tunnelsView.onTunnelChange) tunnelsView.tunnelsChangedCB = service.IPCClientRegisterTunnelsChange(tunnelsView.onTunnelsChange) - tunnelsView.onTunnelsChange() return tunnelsView, nil } @@ -152,11 +147,15 @@ func (tv *ListView) onTunnelChange(tunnel *service.Tunnel, state service.TunnelS } func (tv *ListView) onTunnelsChange() { + tv.Load(true) +} + +func (tv *ListView) Load(asyncUI bool) { tunnels, err := service.IPCClientTunnels() if err != nil { return } - tv.Synchronize(func() { + doUI := func() { newTunnels := make(map[service.Tunnel]bool, len(tunnels)) oldTunnels := make(map[service.Tunnel]bool, len(tv.model.tunnels)) for _, tunnel := range tunnels { @@ -197,7 +196,12 @@ func (tv *ListView) onTunnelsChange() { tv.selectTunnel(firstTunnelName) } } - }) + } + if asyncUI { + tv.Synchronize(doUI) + } else { + doUI() + } } func (tv *ListView) selectTunnel(tunnelName string) { |