Skip to content

Commit dead71c

Browse files
committed
Make the widget available in all windows of Xcode
1 parent 87f607e commit dead71c

2 files changed

Lines changed: 25 additions & 8 deletions

File tree

Core/Sources/SuggestionWidget/SuggestionWidgetController.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,19 @@ extension SuggestionWidgetController {
480480
editor: focusElement
481481
)
482482
}
483+
} else if let window = application.focusedWindow,
484+
!["open_quickly"].contains(window.identifier),
485+
let frame = application.focusedWindow?.rect,
486+
frame.size.height > 200,
487+
let screen = NSScreen.screens.first(where: { $0.frame.origin == .zero }),
488+
let firstScreen = NSScreen.main
489+
{
490+
return UpdateLocationStrategy.FixedToBottom().framesForWindows(
491+
editorFrame: frame,
492+
mainScreen: screen,
493+
activeScreen: firstScreen,
494+
preferredInsideEditorMinWidth: 9_999_999_999
495+
)
483496
}
484497
}
485498
return nil

Core/Sources/SuggestionWidget/WidgetPositionStrategy.swift

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ enum UpdateLocationStrategy {
77
editorFrame: CGRect,
88
mainScreen: NSScreen,
99
activeScreen: NSScreen,
10-
editor: AXUIElement
10+
editor: AXUIElement,
11+
preferredInsideEditorMinWidth: Double = UserDefaults.shared
12+
.value(for: \.preferWidgetToStayInsideEditorWhenWidthGreaterThan)
1113
) -> (
1214
widgetFrame: CGRect,
1315
panelFrame: CGRect,
@@ -41,7 +43,8 @@ enum UpdateLocationStrategy {
4143
alignPanelTopToAnchor: nil,
4244
editorFrame: editorFrame,
4345
mainScreen: mainScreen,
44-
activeScreen: activeScreen
46+
activeScreen: activeScreen,
47+
preferredInsideEditorMinWidth: preferredInsideEditorMinWidth
4548
)
4649
}
4750
}
@@ -50,7 +53,9 @@ enum UpdateLocationStrategy {
5053
func framesForWindows(
5154
editorFrame: CGRect,
5255
mainScreen: NSScreen,
53-
activeScreen: NSScreen
56+
activeScreen: NSScreen,
57+
preferredInsideEditorMinWidth: Double = UserDefaults.shared
58+
.value(for: \.preferWidgetToStayInsideEditorWhenWidthGreaterThan)
5459
) -> (
5560
widgetFrame: CGRect,
5661
panelFrame: CGRect,
@@ -62,7 +67,8 @@ enum UpdateLocationStrategy {
6267
alignPanelTopToAnchor: false,
6368
editorFrame: editorFrame,
6469
mainScreen: mainScreen,
65-
activeScreen: activeScreen
70+
activeScreen: activeScreen,
71+
preferredInsideEditorMinWidth: preferredInsideEditorMinWidth
6672
)
6773
}
6874
}
@@ -73,16 +79,14 @@ enum UpdateLocationStrategy {
7379
alignPanelTopToAnchor fixedAlignment: Bool?,
7480
editorFrame: CGRect,
7581
mainScreen: NSScreen,
76-
activeScreen: NSScreen
82+
activeScreen: NSScreen,
83+
preferredInsideEditorMinWidth: Double
7784
) -> (
7885
widgetFrame: CGRect,
7986
panelFrame: CGRect,
8087
tabFrame: CGRect,
8188
alignPanelTopToAnchor: Bool
8289
) {
83-
let preferredInsideEditorMinWidth = UserDefaults.shared
84-
.value(for: \.preferWidgetToStayInsideEditorWhenWidthGreaterThan)
85-
8690
let maxY = max(
8791
y,
8892
mainScreen.frame.height - editorFrame.maxY + Style.widgetPadding,

0 commit comments

Comments
 (0)