修复:分号加粗 + 设置面板可反复打开
- drawColon 圆点半径系数 0.06→0.12,分号分隔符明显加粗 - configureSheet 由“每次新建 controller”改为复用单个 lazy controller 的 window: 屏幕保护框架会缓存首次 configureSheet 返回的窗口引用,每次新建会导致关闭后 再次点击复用已隐藏的旧窗口而无反应(须重启“系统设置”才能再开);复用同一 window 使缓存引用始终有效、可反复 beginSheet
This commit is contained in:
@@ -336,7 +336,7 @@ final class FlipClockSaverView: ScreenSaverView {
|
||||
ctx.saveGState()
|
||||
ctx.setFillColor(textColor.cgColor)
|
||||
let cx = rect.midX
|
||||
let r = min(rect.width, rect.height) * 0.06
|
||||
let r = min(rect.width, rect.height) * 0.12
|
||||
for cy in [rect.minY + rect.height * 0.62, rect.minY + rect.height * 0.38] {
|
||||
ctx.fillEllipse(in: CGRect(x: cx - r, y: cy - r, width: r * 2, height: r * 2))
|
||||
}
|
||||
@@ -410,15 +410,13 @@ final class FlipClockSaverView: ScreenSaverView {
|
||||
|
||||
// MARK: 设置面板
|
||||
override var hasConfigureSheet: Bool { true }
|
||||
// 持久保留所有 controller:NSControl.target 是弱引用,
|
||||
// controller 一旦释放,已显示窗口里的滑杆/按钮就会失去响应
|
||||
private var configControllers: [FlipClockConfigController] = []
|
||||
// 复用同一个 controller/window:每次点“选项”框架都会重新调用 configureSheet,
|
||||
// 返回同一个已存在的 window 即可反复弹出。若每次都新建,框架缓存的仍是首个窗口,
|
||||
// 关掉后再次点击会复用那个已 endSheet 隐藏的旧窗口而无反应(只能重启“系统设置”才能再开)。
|
||||
private lazy var configController: FlipClockConfigController = FlipClockConfigController()
|
||||
override var configureSheet: NSWindow? {
|
||||
// 每次打开都新建窗口:避免窗口被关闭后无法再次弹出
|
||||
let controller = FlipClockConfigController()
|
||||
controller.reloadValues()
|
||||
configControllers.append(controller)
|
||||
return controller.window
|
||||
configController.reloadValues()
|
||||
return configController.window
|
||||
}
|
||||
|
||||
@objc private func handleSettingsChanged(_ note: Notification) {
|
||||
|
||||
Reference in New Issue
Block a user