Skip to content

Commit 348ff4b

Browse files
committed
Fix observation
1 parent 870b8ae commit 348ff4b

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

Core/Sources/Service/GUI/RealtimeSuggestionIndicatorController.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import ActiveApplicationMonitor
22
import AppKit
3+
import AsyncAlgorithms
34
import AXNotificationStream
45
import DisplayLink
56
import Environment
67
import QuartzCore
78
import SwiftUI
89
import XPCShared
9-
import AsyncAlgorithms
1010

1111
/// Present a tiny dot next to mouse cursor if real-time suggestion is enabled.
1212
@MainActor
@@ -97,7 +97,6 @@ final class RealtimeSuggestionIndicatorController {
9797
private var windowChangeObservationTask: Task<Void, Error>?
9898
private var activeApplicationMonitorTask: Task<Void, Error>?
9999
private var editorObservationTask: Task<Void, Error>?
100-
private var xcode: NSRunningApplication?
101100
var isObserving = false {
102101
didSet {
103102
Task {
@@ -166,7 +165,6 @@ final class RealtimeSuggestionIndicatorController {
166165
}
167166

168167
private func observeXcodeWindowChangeIfNeeded(_ app: NSRunningApplication) {
169-
xcode = app
170168
guard windowChangeObservationTask == nil else { return }
171169
windowChangeObservationTask = Task { [weak self] in
172170
let notifications = AXNotificationStream(
@@ -177,6 +175,7 @@ final class RealtimeSuggestionIndicatorController {
177175
kAXFocusedWindowChangedNotification,
178176
kAXFocusedUIElementChangedNotification
179177
)
178+
self?.observeEditorChangeIfNeeded()
180179
for await notification in notifications {
181180
guard let self else { return }
182181
try Task.checkCancellation()
@@ -210,6 +209,7 @@ final class RealtimeSuggestionIndicatorController {
210209
.copyValue(key: kAXVerticalScrollBarAttribute)
211210
else { return }
212211

212+
updateIndicatorLocation()
213213
editorObservationTask = Task { [weak self] in
214214
let notificationsFromEditor = AXNotificationStream(
215215
app: activeXcode,
@@ -220,13 +220,13 @@ final class RealtimeSuggestionIndicatorController {
220220
kAXLayoutChangedNotification,
221221
kAXSelectedTextChangedNotification
222222
)
223-
223+
224224
let notificationsFromScrollBar = AXNotificationStream(
225225
app: activeXcode,
226226
element: scrollBar,
227227
notificationNames: kAXValueChangedNotification
228228
)
229-
229+
230230
for await _ in merge(notificationsFromEditor, notificationsFromScrollBar) {
231231
guard let self else { return }
232232
try Task.checkCancellation()

Core/Sources/SuggestionWidget/SuggestionWidgetController.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public final class SuggestionWidgetController {
6767
private var userDefaultsObserver = UserDefaultsObserver()
6868
private var windowChangeObservationTask: Task<Void, Error>?
6969
private var activeApplicationMonitorTask: Task<Void, Error>?
70-
private var xcode: NSRunningApplication?
7170
private var suggestionForFiles: [URL: Suggestion] = [:]
7271

7372
public var onAcceptButtonTapped: (() -> Void)? {
@@ -171,7 +170,6 @@ public final class SuggestionWidgetController {
171170
}
172171

173172
private func observeXcodeWindowChangeIfNeeded(_ app: NSRunningApplication) {
174-
xcode = app
175173
guard windowChangeObservationTask == nil else { return }
176174
windowChangeObservationTask = Task { [weak self] in
177175
let notifications = AXNotificationStream(
@@ -226,7 +224,7 @@ public final class SuggestionWidgetController {
226224
return
227225
}
228226

229-
if let xcode {
227+
if let xcode = ActiveApplicationMonitor.activeXcode {
230228
let application = AXUIElementCreateApplication(xcode.processIdentifier)
231229
if let focusElement: AXUIElement = try? application
232230
.copyValue(key: kAXFocusedUIElementAttribute),

0 commit comments

Comments
 (0)