|
|
@@ -165,9 +165,41 @@ enum PrintService {
|
|
|
|
|
|
NSApp.activate(ignoringOtherApps: true)
|
|
|
window?.makeKeyAndOrderFront(nil)
|
|
|
+
|
|
|
+ let observer = observePrintPanelTrafficLights()
|
|
|
+ defer { NotificationCenter.default.removeObserver(observer) }
|
|
|
_ = operation.run()
|
|
|
}
|
|
|
|
|
|
+ private static func observePrintPanelTrafficLights() -> NSObjectProtocol {
|
|
|
+ NotificationCenter.default.addObserver(
|
|
|
+ forName: NSWindow.didBecomeKeyNotification,
|
|
|
+ object: nil,
|
|
|
+ queue: .main
|
|
|
+ ) { notification in
|
|
|
+ guard let panelWindow = notification.object as? NSWindow,
|
|
|
+ isPrintPanelWindow(panelWindow) else { return }
|
|
|
+ hideTrafficLights(on: panelWindow)
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ hideTrafficLights(on: panelWindow)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static func isPrintPanelWindow(_ window: NSWindow) -> Bool {
|
|
|
+ let className = String(describing: type(of: window))
|
|
|
+ if className.localizedCaseInsensitiveContains("printpanel") {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return window.title == "Print"
|
|
|
+ }
|
|
|
+
|
|
|
+ private static func hideTrafficLights(on window: NSWindow) {
|
|
|
+ for buttonType: NSWindow.ButtonType in [.closeButton, .miniaturizeButton, .zoomButton] {
|
|
|
+ window.standardWindowButton(buttonType)?.isHidden = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private static func configuredPrintInfo() -> NSPrintInfo {
|
|
|
let printInfo = (NSPrintInfo.shared.copy() as? NSPrintInfo) ?? NSPrintInfo()
|
|
|
|