From 95f4e0ae1aa4af80069f59987520e36db64ee779 Mon Sep 17 00:00:00 2001 From: celeron533 Date: Mon, 27 Jan 2020 23:47:38 +0800 Subject: [PATCH] Bug fix: wrong server in tray menu as selected server when there has an invalid server in the list Fix #2782 --- shadowsocks-csharp/View/MenuViewController.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/shadowsocks-csharp/View/MenuViewController.cs b/shadowsocks-csharp/View/MenuViewController.cs index 18d0e1b0..c3a3a886 100644 --- a/shadowsocks-csharp/View/MenuViewController.cs +++ b/shadowsocks-csharp/View/MenuViewController.cs @@ -454,30 +454,30 @@ namespace Shadowsocks.View { items.RemoveAt(0); } - int i = 0; + int strategyCount = 0; foreach (var strategy in controller.GetStrategies()) { MenuItem item = new MenuItem(strategy.Name); item.Tag = strategy.ID; item.Click += AStrategyItem_Click; - items.Add(i, item); - i++; + items.Add(strategyCount, item); + strategyCount++; } // user wants a seperator item between strategy and servers menugroup - items.Add(i++, new MenuItem("-")); + items.Add(strategyCount++, new MenuItem("-")); - int strategyCount = i; + int serverCount = 0; Configuration configuration = controller.GetConfigurationCopy(); foreach (var server in configuration.configs) { if (Configuration.ChecksServer(server)) { MenuItem item = new MenuItem(server.FriendlyName()); - item.Tag = i - strategyCount; + item.Tag = configuration.configs.FindIndex(s => s == server); item.Click += AServerItem_Click; - items.Add(i, item); - i++; + items.Add(strategyCount + serverCount, item); + serverCount++; } }