From 8ebebbda151bf2a2bb898e83818b8454e7c6404a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6ttger?= Date: Sun, 16 Mar 2025 15:18:14 +0100 Subject: [PATCH] Fix cant close qr if opened manually --- ShareExtension/ShareViewController.swift | 40 +++++++++++++----------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/ShareExtension/ShareViewController.swift b/ShareExtension/ShareViewController.swift index ee09d4a..5ac496c 100644 --- a/ShareExtension/ShareViewController.swift +++ b/ShareExtension/ShareViewController.swift @@ -151,26 +151,28 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ private func openQrCodeView() { - let contentView = QrCodeView { - self.closeQrCodeView() - } - - let hostingView = NSHostingView(rootView: contentView) - - let panel = NSPanel(contentRect: NSRect(x: 0, y: 0, width: qrCodeViewSize.width, height: qrCodeViewSize.height), - styleMask: [.titled, .closable, .utilityWindow], - backing: .buffered, - defer: false) - - panel.title = "SwiftUI Sheet" - panel.contentView = hostingView - - self.qrCodeSheetView = panel - - if let mainWindow = NSApp.mainWindow { + if qrCodeSheetView != nil { + let contentView = QrCodeView { + self.closeQrCodeView() + } - self.sheetAttachedWindow = mainWindow - mainWindow.beginSheet(panel) { _ in } + let hostingView = NSHostingView(rootView: contentView) + + let panel = NSPanel(contentRect: NSRect(x: 0, y: 0, width: qrCodeViewSize.width, height: qrCodeViewSize.height), + styleMask: [.titled, .closable, .utilityWindow], + backing: .buffered, + defer: false) + + panel.title = "SwiftUI Sheet" + panel.contentView = hostingView + + self.qrCodeSheetView = panel + + if let mainWindow = NSApp.mainWindow { + + self.sheetAttachedWindow = mainWindow + mainWindow.beginSheet(panel) { _ in } + } } }