Skip to content

Commit 2b7cb17

Browse files
committed
Start OverlayWindowController at launch
1 parent e5c5e0e commit 2b7cb17

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

Core/Package.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ let package = Package(
3838
dependencies: [
3939
.package(path: "../Tool"),
4040
.package(path: "../ChatPlugins"),
41+
.package(path: "../OverlayWindow"),
4142
.package(url: "https://github.com/apple/swift-async-algorithms", from: "1.0.0"),
4243
.package(url: "https://github.com/gonzalezreal/swift-markdown-ui", from: "2.4.1"),
4344
.package(url: "https://github.com/sparkle-project/Sparkle", from: "2.6.4"),
@@ -93,6 +94,7 @@ let package = Package(
9394
.product(name: "OpenAIService", package: "Tool"),
9495
.product(name: "Preferences", package: "Tool"),
9596
.product(name: "CommandHandler", package: "Tool"),
97+
.product(name: "OverlayWindow", package: "OverlayWindow"),
9698
.product(name: "AsyncAlgorithms", package: "swift-async-algorithms"),
9799
.product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
98100
.product(name: "Dependencies", package: "swift-dependencies"),

Core/Sources/Service/Service.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Foundation
77
import GitHubCopilotService
88
import KeyBindingManager
99
import Logger
10+
import OverlayWindow
1011
import SuggestionService
1112
import Toast
1213
import Workspace
@@ -37,6 +38,7 @@ public final class Service {
3738
let globalShortcutManager: GlobalShortcutManager
3839
let keyBindingManager: KeyBindingManager
3940
let xcodeThemeController: XcodeThemeController = .init()
41+
let overlayWindowController: OverlayWindowController
4042

4143
#if canImport(ProService)
4244
let proService: ProService
@@ -54,6 +56,7 @@ public final class Service {
5456

5557
realtimeSuggestionController = .init()
5658
scheduledCleaner = .init()
59+
overlayWindowController = .init()
5760

5861
#if canImport(ProService)
5962
proService = ProService()
@@ -94,6 +97,7 @@ public final class Service {
9497
#if canImport(ProService)
9598
proService.start()
9699
#endif
100+
overlayWindowController.start()
97101
DependencyUpdater().update()
98102
globalShortcutManager.start()
99103
keyBindingManager.start()

OverlayWindow/Package.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,4 @@ let package = Package(
3636
]
3737
)
3838

39+

OverlayWindow/Sources/OverlayWindow/OverlayWindowController.swift

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,18 @@ public final class OverlayWindowController {
1010
_ application: NSRunningApplication
1111
) -> any IDEWorkspaceWindowOverlayWindowControllerContentProvider
1212

13-
var ideWindowOverlayWindowControllers: [URL: IDEWorkspaceWindowOverlayWindowController] = [:]
14-
var ideWindowOverlayWindowControllerContentProviderFactories:
13+
static var ideWindowOverlayWindowControllerContentProviderFactories:
1514
[IDEWorkspaceWindowOverlayWindowControllerContentProviderFactory] = []
1615

17-
public init() {
16+
var ideWindowOverlayWindowControllers: [URL: IDEWorkspaceWindowOverlayWindowController] = [:]
17+
18+
public init() {}
19+
20+
public func start() {
1821
observeEvents()
1922
}
2023

21-
public func registerIDEWorkspaceWindowOverlayWindowControllerContentProviderFactory(
24+
public static func registerIDEWorkspaceWindowOverlayWindowControllerContentProviderFactory(
2225
_ factory: @escaping IDEWorkspaceWindowOverlayWindowControllerContentProviderFactory
2326
) {
2427
ideWindowOverlayWindowControllerContentProviderFactories.append(factory)
@@ -33,6 +36,20 @@ extension OverlayWindowController {
3336

3437
private extension OverlayWindowController {
3538
func observeWindowChange() {
39+
if ideWindowOverlayWindowControllers.isEmpty {
40+
if let app = XcodeInspector.shared.activeXcode,
41+
let windowInspector = XcodeInspector.shared
42+
.focusedWindow as? WorkspaceXcodeWindowInspector
43+
{
44+
let workspaceURL = windowInspector.workspaceURL
45+
createNewIDEOverlayWindowController(
46+
for: workspaceURL,
47+
inspector: windowInspector,
48+
application: app.runningApplication
49+
)
50+
}
51+
}
52+
3653
withPerceptionTracking {
3754
_ = XcodeInspector.shared.focusedWindow
3855
_ = XcodeInspector.shared.activeXcode

0 commit comments

Comments
 (0)