aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/tunnelsview.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-04-29 21:01:57 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-04-29 21:01:57 +0200
commiteb65b129a1c08cabaa59facfd39a051cb9b2ea65 (patch)
treef6a8ecfcfc647373f6a572ef8c305e34ef01d1ba /ui/tunnelsview.go
parentui: select newly created/edited tunnels (diff)
downloadwireguard-windows-eb65b129a1c08cabaa59facfd39a051cb9b2ea65.tar.xz
wireguard-windows-eb65b129a1c08cabaa59facfd39a051cb9b2ea65.zip
ui: rework tunnel adding logic and fix bugs
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/tunnelsview.go')
-rw-r--r--ui/tunnelsview.go30
1 files changed, 15 insertions, 15 deletions
diff --git a/ui/tunnelsview.go b/ui/tunnelsview.go
index 58816d09..15dc22ca 100644
--- a/ui/tunnelsview.go
+++ b/ui/tunnelsview.go
@@ -7,6 +7,7 @@ package ui
import (
"sort"
+ "strings"
"github.com/lxn/walk"
"golang.zx2c4.com/wireguard/windows/service"
@@ -176,34 +177,33 @@ func (tv *TunnelsView) onTunnelsChange() {
}
}
}
- tunnelsAdded := 0
- lastTunnelName := ""
+ didAdd := false
+ firstTunnelName := ""
for tunnel := range newTunnels {
if !oldTunnels[tunnel] {
+ //TODO: use proper tunnel string sorting/comparison algorithm, as the other comments indicate too.
+ if len(firstTunnelName) == 0 || strings.Compare(firstTunnelName, tunnel.Name) > 0 {
+ firstTunnelName = tunnel.Name
+ }
tv.model.tunnels = append(tv.model.tunnels, tunnel)
- tunnelsAdded++
- lastTunnelName = tunnel.Name
+ didAdd = true
}
}
- if tunnelsAdded > 0 {
+ if didAdd {
tv.model.PublishRowsReset()
tv.model.Sort(tv.model.SortedColumn(), tv.model.SortOrder())
- // If adding a tunnel for the first time when the previously were none, select it
if len(tv.SelectedIndexes()) == 0 {
- tv.selectTunnel(lastTunnelName)
+ tv.selectTunnel(firstTunnelName)
}
}
})
}
-// Tiny helper to select a tunnel by name.
func (tv *TunnelsView) selectTunnel(tunnelName string) {
- tv.Synchronize(func() {
- for i, tunnel := range tv.model.tunnels {
- if tunnel.Name == tunnelName {
- tv.SetCurrentIndex(i)
- break
- }
+ for i, tunnel := range tv.model.tunnels {
+ if tunnel.Name == tunnelName {
+ tv.SetCurrentIndex(i)
+ break
}
- })
+ }
}