From 2c3debe78e2f88c8f11ac48958799d4c8fbe4619 Mon Sep 17 00:00:00 2001 From: jose3ww <24708829+jose3ww@users.noreply.github.com> Date: Wed, 27 May 2026 12:54:44 +0900 Subject: [PATCH] desktop_webview_window: add Swift Package Manager support for macOS Adds Package.swift under macos/desktop_webview_window/ and migrates sources to Sources/desktop_webview_window/, matching the layout already merged for pasteboard (#463) and desktop_drop (#403). The existing CocoaPods build continues to work via the .podspec, whose source_files glob is updated to the new path. WebViewLayoutController.swift loads its xib via Bundle.module under #if SWIFT_PACKAGE, falling back to the previous Bundle(for: Self.self) lookup for CocoaPods builds. Both build paths verified by building and running the example app on macOS. Resolves #468. --- .../macos/desktop_webview_window.podspec | 2 +- .../desktop_webview_window/Package.swift | 24 +++++++++++++++++++ .../DesktopWebviewWindowPlugin.swift | 0 .../MessageChannelPlugin.swift | 0 .../WebViewLayoutController.swift | 6 +++++ .../WebViewLayoutController.xib | 0 .../WebviewWindowController.swift | 0 7 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 packages/desktop_webview_window/macos/desktop_webview_window/Package.swift rename packages/desktop_webview_window/macos/{Classes => desktop_webview_window/Sources/desktop_webview_window}/DesktopWebviewWindowPlugin.swift (100%) rename packages/desktop_webview_window/macos/{Classes => desktop_webview_window/Sources/desktop_webview_window}/MessageChannelPlugin.swift (100%) rename packages/desktop_webview_window/macos/{Classes => desktop_webview_window/Sources/desktop_webview_window}/WebViewLayoutController.swift (96%) rename packages/desktop_webview_window/macos/{Classes => desktop_webview_window/Sources/desktop_webview_window}/WebViewLayoutController.xib (100%) rename packages/desktop_webview_window/macos/{Classes => desktop_webview_window/Sources/desktop_webview_window}/WebviewWindowController.swift (100%) diff --git a/packages/desktop_webview_window/macos/desktop_webview_window.podspec b/packages/desktop_webview_window/macos/desktop_webview_window.podspec index cbc1cd57..e233c331 100644 --- a/packages/desktop_webview_window/macos/desktop_webview_window.podspec +++ b/packages/desktop_webview_window/macos/desktop_webview_window.podspec @@ -13,7 +13,7 @@ A new flutter plugin project. s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' + s.source_files = 'desktop_webview_window/Sources/desktop_webview_window/**/*.{swift,xib}' s.dependency 'FlutterMacOS' s.platform = :osx, '10.13' diff --git a/packages/desktop_webview_window/macos/desktop_webview_window/Package.swift b/packages/desktop_webview_window/macos/desktop_webview_window/Package.swift new file mode 100644 index 00000000..e3e91b36 --- /dev/null +++ b/packages/desktop_webview_window/macos/desktop_webview_window/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "desktop_webview_window", + platforms: [ + .macOS("10.13") + ], + products: [ + .library(name: "desktop-webview-window", targets: ["desktop_webview_window"]) + ], + dependencies: [], + targets: [ + .target( + name: "desktop_webview_window", + dependencies: [], + resources: [ + .process("WebViewLayoutController.xib"), + ] + ) + ] +) diff --git a/packages/desktop_webview_window/macos/Classes/DesktopWebviewWindowPlugin.swift b/packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/DesktopWebviewWindowPlugin.swift similarity index 100% rename from packages/desktop_webview_window/macos/Classes/DesktopWebviewWindowPlugin.swift rename to packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/DesktopWebviewWindowPlugin.swift diff --git a/packages/desktop_webview_window/macos/Classes/MessageChannelPlugin.swift b/packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/MessageChannelPlugin.swift similarity index 100% rename from packages/desktop_webview_window/macos/Classes/MessageChannelPlugin.swift rename to packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/MessageChannelPlugin.swift diff --git a/packages/desktop_webview_window/macos/Classes/WebViewLayoutController.swift b/packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebViewLayoutController.swift similarity index 96% rename from packages/desktop_webview_window/macos/Classes/WebViewLayoutController.swift rename to packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebViewLayoutController.swift index 5b398ea8..e2087171 100644 --- a/packages/desktop_webview_window/macos/Classes/WebViewLayoutController.swift +++ b/packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebViewLayoutController.swift @@ -39,7 +39,13 @@ class WebViewLayoutController: NSViewController { self.methodChannel = methodChannel self.titleBarHeight = titleBarHeight self.titleBarTopPadding = titleBarTopPadding + #if SWIFT_PACKAGE + // SwiftPM places resources in a per-module bundle exposed as `Bundle.module`. + super.init(nibName: "WebViewLayoutController", bundle: Bundle.module) + #else + // CocoaPods build: the nib is in the framework bundle of this class. super.init(nibName: "WebViewLayoutController", bundle: Bundle(for: WebViewLayoutController.self)) + #endif } required init?(coder: NSCoder) { diff --git a/packages/desktop_webview_window/macos/Classes/WebViewLayoutController.xib b/packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebViewLayoutController.xib similarity index 100% rename from packages/desktop_webview_window/macos/Classes/WebViewLayoutController.xib rename to packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebViewLayoutController.xib diff --git a/packages/desktop_webview_window/macos/Classes/WebviewWindowController.swift b/packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebviewWindowController.swift similarity index 100% rename from packages/desktop_webview_window/macos/Classes/WebviewWindowController.swift rename to packages/desktop_webview_window/macos/desktop_webview_window/Sources/desktop_webview_window/WebviewWindowController.swift