Files
arcrun-collector/cmd
Leo a02eed539a t194 三修:右鍵選單——正解是「**少寫**一段」,不是再補一段
leo 實測:右鍵仍然沒有 quit 選單。

## 真兇:我把函式庫本來就會做對的事,換成一個更脆弱的版本
讀 systray_darwin.go 的 systray_on_rclick():

    func systray_on_rclick() {
        if onRClick != nil { onRClick(st) } else { C.show_menu() }
    }

⇒ **沒註冊 SetOnRClick 時,函式庫自己就會把選單叫出來**;
   而且 C 層的 show_menu 內部已經處理好整套:
   create_menu() → [statusItem.button performClick:nil] → set_menu_nil()

我卻註冊了自己的 handler、還加 `if menu != nil` 防呆
⇒ 等於用一個判斷把「本來會動的預設行為」擋掉。

修:**刪掉 SetOnRClick 註冊**。左鍵仍自訂(要開視窗),右鍵交還函式庫。

## 判準(已寫進 mistakes)
用第三方函式庫時,**先讀它的預設行為再決定要不要覆寫**。
「多註冊一個 handler」看起來是加功能,實際上常是**關掉**原本正確的行為。

## 閘也跟著改
check-tray.sh 原本驗「SetOnRClick 有註冊且順序對」——**那是在守一個錯的寫法**。
改成反向:**出現 systray.SetOnRClick 就擋下**,並說明原因。
實跑 7 項全過;App 活著 pid 14081、crash 0。
2026-08-05 02:27:23 +08:00
..