Skip to content

Commit 03c78c0

Browse files
sohunjugandydotxyz
authored andcommitted
[fix] Remove old menu chan
1 parent 11c585f commit 03c78c0

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

systray.go

+20
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ func Register(onReady func(), onExit func()) {
127127

128128
// ResetMenu will remove all menu items
129129
func ResetMenu() {
130+
menuItemsLock.Lock()
131+
id := currentID.Load()
132+
menuItemsLock.Unlock()
133+
for i, item := range menuItems {
134+
if i < id {
135+
item.Remove()
136+
}
137+
}
130138
resetMenu()
131139
}
132140

@@ -224,6 +232,11 @@ func (item *MenuItem) Remove() {
224232
removeMenuItem(item)
225233
menuItemsLock.Lock()
226234
delete(menuItems, item.id)
235+
select {
236+
case <-item.ClickedCh:
237+
default:
238+
}
239+
close(item.ClickedCh)
227240
menuItemsLock.Unlock()
228241
}
229242

@@ -252,6 +265,13 @@ func (item *MenuItem) Uncheck() {
252265
// update propagates changes on a menu item to systray
253266
func (item *MenuItem) update() {
254267
menuItemsLock.Lock()
268+
if v, ok := menuItems[item.id]; ok {
269+
select {
270+
case <-v.ClickedCh:
271+
default:
272+
}
273+
close(v.ClickedCh)
274+
}
255275
menuItems[item.id] = item
256276
menuItemsLock.Unlock()
257277
addOrUpdateMenuItem(item)

0 commit comments

Comments
 (0)