Repo // Close all panels of the previous session.

This commit is contained in:
ShikiSuen 2023-12-20 00:01:38 +08:00
parent c5ce9199bd
commit 2a4b01c234
5 changed files with 28 additions and 3 deletions

View File

@ -24,6 +24,7 @@ private extension NSUserInterfaceLayoutOrientation {
} }
public class CtlCandidateTDK: CtlCandidate, NSWindowDelegate { public class CtlCandidateTDK: CtlCandidate, NSWindowDelegate {
@objc var observation: NSKeyValueObservation?
public var maxLinesPerPage: Int = 0 public var maxLinesPerPage: Int = 0
public var useCocoa: Bool = false public var useCocoa: Bool = false
public var useMouseScrolling: Bool = true public var useMouseScrolling: Bool = true
@ -72,6 +73,10 @@ public class CtlCandidateTDK: CtlCandidate, NSWindowDelegate {
Self.currentWindow = panel Self.currentWindow = panel
window?.delegate = self window?.delegate = self
currentLayout = layout currentLayout = layout
observation = Broadcaster.shared.observe(\.eventForClosingAllPanels, options: [.new]) { _, _ in
self.visible = false
}
} }
@available(*, unavailable) @available(*, unavailable)

View File

@ -26,6 +26,8 @@ import TooltipUI
/// IMKInputController /// IMKInputController
@objc(SessionCtl) // ObjC IMK ObjC @objc(SessionCtl) // ObjC IMK ObjC
public class SessionCtl: IMKInputController { public class SessionCtl: IMKInputController {
public weak static var current: SessionCtl?
/// ///
public static var areWeNerfing = false public static var areWeNerfing = false
@ -219,6 +221,9 @@ public class SessionCtl: IMKInputController {
private func construct(client theClient: (IMKTextInput & NSObjectProtocol)? = nil) { private func construct(client theClient: (IMKTextInput & NSObjectProtocol)? = nil) {
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
//
Self.current?.hidePalettes()
Self.current = self
self.inputHandler = InputHandler( self.inputHandler = InputHandler(
lm: LMMgr.currentLM, uom: LMMgr.currentUOM, pref: PrefMgr.shared lm: LMMgr.currentLM, uom: LMMgr.currentUOM, pref: PrefMgr.shared
) )
@ -479,8 +484,12 @@ public extension SessionCtl {
/// ///
override func hidePalettes() { override func hidePalettes() {
candidateUI?.visible = false Broadcaster.shared.eventForClosingAllPanels = .init()
popupCompositionBuffer.hide() //
tooltipInstance.hide() //
//
// candidateUI?.visible = false
// popupCompositionBuffer.hide()
// tooltipInstance.hide()
} }
} }

View File

@ -13,4 +13,5 @@ import AppKit
@objcMembers public class Broadcaster: NSObject { @objcMembers public class Broadcaster: NSObject {
public static var shared = Broadcaster() public static var shared = Broadcaster()
public dynamic var eventForReloadingPhraseEditor = UUID() public dynamic var eventForReloadingPhraseEditor = UUID()
public dynamic var eventForClosingAllPanels = UUID()
} }

View File

@ -10,6 +10,7 @@ import AppKit
import Shared import Shared
public class TooltipUI_EarlyCocoa: NSWindowController, TooltipUIProtocol { public class TooltipUI_EarlyCocoa: NSWindowController, TooltipUIProtocol {
@objc var observation: NSKeyValueObservation?
private var messageText: NSTextField private var messageText: NSTextField
private var tooltip: String = "" { private var tooltip: String = "" {
didSet { didSet {
@ -100,6 +101,10 @@ public class TooltipUI_EarlyCocoa: NSWindowController, TooltipUIProtocol {
panel.contentView?.addSubview(messageText) panel.contentView?.addSubview(messageText)
Self.currentWindow = panel Self.currentWindow = panel
super.init(window: panel) super.init(window: panel)
observation = Broadcaster.shared.observe(\.eventForClosingAllPanels, options: [.new]) { _, _ in
self.hide()
}
} }
@available(*, unavailable) @available(*, unavailable)

View File

@ -12,6 +12,7 @@ import NSAttributedTextView
import Shared import Shared
public class TooltipUI_LateCocoa: NSWindowController, TooltipUIProtocol { public class TooltipUI_LateCocoa: NSWindowController, TooltipUIProtocol {
@objc var observation: NSKeyValueObservation?
private var messageText: NSAttributedTooltipTextView private var messageText: NSAttributedTooltipTextView
private var tooltip: String = "" { private var tooltip: String = "" {
didSet { didSet {
@ -55,6 +56,10 @@ public class TooltipUI_LateCocoa: NSWindowController, TooltipUIProtocol {
panel.contentView?.addSubview(messageText) panel.contentView?.addSubview(messageText)
Self.currentWindow = panel Self.currentWindow = panel
super.init(window: panel) super.init(window: panel)
observation = Broadcaster.shared.observe(\.eventForClosingAllPanels, options: [.new]) { _, _ in
self.hide()
}
} }
@available(*, unavailable) @available(*, unavailable)