Skip to content

Commit aa4a544

Browse files
committed
Fixed: Update proxy list when reload config
1 parent 01f96f3 commit aa4a544

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

ClashX/AppDelegate.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2626
@IBOutlet weak var proxyModeRuleMenuItem: NSMenuItem!
2727

2828
@IBOutlet weak var separatorLineTop: NSMenuItem!
29+
@IBOutlet weak var sepatatorLineEndProxySelect: NSMenuItem!
2930

3031
var disposeBag = DisposeBag()
3132
let ssQueue = DispatchQueue(label: "com.w2fzu.ssqueue", attributes: .concurrent)
@@ -42,7 +43,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
4243
let view = StatusItemView.create(statusItem: statusItem,statusMenu: statusMenu)
4344
statusItem.view = view
4445
setupData()
45-
setupProxyList()
46+
updateProxyList()
4647

4748
}
4849

@@ -94,12 +95,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
9495
}).disposed(by: disposeBag)
9596
}
9697

97-
func setupProxyList() {
98+
func updateProxyList() {
9899
ProxyMenuItemFactory.menuItems { [unowned self] (menus) in
99-
let index = self.statusMenu.items.index(of: self.separatorLineTop)! + 1
100+
let startIndex = self.statusMenu.items.index(of: self.separatorLineTop)! + 1
101+
let endIndex = self.statusMenu.items.index(of: self.sepatatorLineEndProxySelect)! + 1
100102
var items = self.statusMenu.items
103+
104+
for idx in startIndex+1 ..< endIndex {
105+
items.remove(at: idx)
106+
}
101107
for each in menus {
102-
items.insert(each, at: index)
108+
items.insert(each, at: startIndex)
103109
}
104110
self.statusMenu.removeAllItems()
105111
for each in items.reversed() {
@@ -124,6 +130,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
124130

125131
if ConfigManager.shared.proxyPortAutoSet {
126132
_ = ProxyConfigManager.setUpSystemProxy(port: config.port,socksPort: config.socketPort)
133+
self.updateProxyList()
127134
completeHandler?()
128135
}
129136
}

ClashX/Base.lproj/Main.storyboard

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<outlet property="proxyModeRuleMenuItem" destination="89n-bD-JHk" id="lT1-J1-X3k"/>
2424
<outlet property="proxySettingMenuItem" destination="8se-yr-wmp" id="yvm-QP-yoA"/>
2525
<outlet property="separatorLineTop" destination="1fM-p6-bHd" id="NFb-qS-TKR"/>
26+
<outlet property="sepatatorLineEndProxySelect" destination="n67-fU-hLx" id="Vgv-N6-SOH"/>
2627
<outlet property="statusMenu" destination="Afa-lD-EbR" id="cov-E9-WrO"/>
2728
</connections>
2829
</customObject>
@@ -53,6 +54,8 @@
5354
</items>
5455
</menu>
5556
</menuItem>
57+
<menuItem isSeparatorItem="YES" id="1fM-p6-bHd"/>
58+
<menuItem isSeparatorItem="YES" id="n67-fU-hLx"/>
5659
<menuItem title="Set as system proxy" id="8se-yr-wmp">
5760
<modifierMask key="keyEquivalentModifierMask"/>
5861
<connections>
@@ -65,14 +68,13 @@
6568
<action selector="actionCopyExportCommand:" target="Voe-Tx-rLC" id="82r-sY-7xb"/>
6669
</connections>
6770
</menuItem>
68-
<menuItem isSeparatorItem="YES" id="1fM-p6-bHd"/>
69-
<menuItem isSeparatorItem="YES" id="n67-fU-hLx"/>
7071
<menuItem title="Start at login" id="B1J-XB-BiZ">
7172
<modifierMask key="keyEquivalentModifierMask"/>
7273
<connections>
7374
<action selector="actionStartAtLogin:" target="Voe-Tx-rLC" id="aie-1F-HjZ"/>
7475
</connections>
7576
</menuItem>
77+
<menuItem isSeparatorItem="YES" id="UpD-DI-Smv"/>
7678
<menuItem title="Config" id="JMV-Dy-CI0">
7779
<modifierMask key="keyEquivalentModifierMask"/>
7880
<menu key="submenu" title="Config" id="tck-zU-JKQ">
@@ -105,7 +107,7 @@
105107
<modifierMask key="keyEquivalentModifierMask"/>
106108
<menu key="submenu" title="Help" id="ogW-pn-jeR">
107109
<items>
108-
<menuItem title="check update" id="p0T-J8-Emx">
110+
<menuItem title="Check update" id="p0T-J8-Emx">
109111
<modifierMask key="keyEquivalentModifierMask"/>
110112
<connections>
111113
<action selector="checkForUpdates:" target="fth-rt-saN" id="gaF-35-d7h"/>

ClashX/General/ProxyMenuItemFactory.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ProxyMenuItemFactory {
2020
let menu = NSMenuItem(title: proxyGroup.key, action: nil, keyEquivalent: "")
2121
let selectedName = proxyGroup.value["now"].stringValue
2222
let submenu = NSMenu(title: proxyGroup.key)
23-
for proxy in proxyGroup.value["all"].arrayValue {
23+
for proxy in proxyGroup.value["all"].arrayValue.reversed() {
2424
let proxyItem = NSMenuItem(title: proxy.stringValue, action: #selector(ProxyMenuItemFactory.actionSelectProxy(sender:)), keyEquivalent: "")
2525
proxyItem.target = ProxyMenuItemFactory.self
2626
proxyItem.state = proxy.stringValue == selectedName ? .on : .off
@@ -29,7 +29,7 @@ class ProxyMenuItemFactory {
2929
menu.submenu = submenu
3030
menuItems.append(menu);
3131
}
32-
completionHandler(menuItems)
32+
completionHandler(menuItems.reversed())
3333
}
3434
}
3535

0 commit comments

Comments
 (0)