修复:分号加粗 + 设置面板可反复打开
- 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.saveGState()
|
||||||
ctx.setFillColor(textColor.cgColor)
|
ctx.setFillColor(textColor.cgColor)
|
||||||
let cx = rect.midX
|
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] {
|
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))
|
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: 设置面板
|
// MARK: 设置面板
|
||||||
override var hasConfigureSheet: Bool { true }
|
override var hasConfigureSheet: Bool { true }
|
||||||
// 持久保留所有 controller:NSControl.target 是弱引用,
|
// 复用同一个 controller/window:每次点“选项”框架都会重新调用 configureSheet,
|
||||||
// controller 一旦释放,已显示窗口里的滑杆/按钮就会失去响应
|
// 返回同一个已存在的 window 即可反复弹出。若每次都新建,框架缓存的仍是首个窗口,
|
||||||
private var configControllers: [FlipClockConfigController] = []
|
// 关掉后再次点击会复用那个已 endSheet 隐藏的旧窗口而无反应(只能重启“系统设置”才能再开)。
|
||||||
|
private lazy var configController: FlipClockConfigController = FlipClockConfigController()
|
||||||
override var configureSheet: NSWindow? {
|
override var configureSheet: NSWindow? {
|
||||||
// 每次打开都新建窗口:避免窗口被关闭后无法再次弹出
|
configController.reloadValues()
|
||||||
let controller = FlipClockConfigController()
|
return configController.window
|
||||||
controller.reloadValues()
|
|
||||||
configControllers.append(controller)
|
|
||||||
return controller.window
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func handleSettingsChanged(_ note: Notification) {
|
@objc private func handleSettingsChanged(_ note: Notification) {
|
||||||
|
|||||||
Reference in New Issue
Block a user