- GUI 单实例锁: 新增 internal/instance 包,首实例监听专用端点, 第二实例发送 focus 信号后静默退出 (Unix: gui.sock, Win: 18924) - 守护进程弱锁修复: NewServer() 在 os.Remove 前先 net.Dial 探测, 有活进程时拒绝启动,避免静默抢占 socket 导致孤儿进程 - macOS .app 重开恢复: 通过 class_addMethod 给 GLFWApplicationDelegate 注册 applicationShouldHandleReopen:hasVisibleWindows: 回调, 绕过 GLFW 直接用 Cocoa makeKeyAndOrderFront: 显示窗口 - 三平台覆盖: macOS/Linux 用 unix socket, Windows 用 TCP 端口
19 lines
421 B
Go
19 lines
421 B
Go
//go:build darwin
|
|
|
|
package ui
|
|
|
|
import "C"
|
|
|
|
// onAppActive is called from the Cocoa main thread when the app
|
|
// becomes active (e.g. the user re-opens the .app bundle while the
|
|
// process is still running). It is set once in Run() before the
|
|
// event loop starts, so no synchronisation is needed.
|
|
var onAppActive func()
|
|
|
|
//export cmAppBecameActive
|
|
func cmAppBecameActive() {
|
|
if onAppActive != nil {
|
|
onAppActive()
|
|
}
|
|
}
|