@@ -25,7 +25,7 @@ struct ChatSettingsGeneralSectionView: View {
2525 @AppStorage ( \. chatModels) var chatModels
2626 @AppStorage ( \. embeddingModels) var embeddingModels
2727 @AppStorage ( \. wrapCodeInChatCodeBlock) var wrapCodeInCodeBlock
28- @AppStorage ( \. alwaysDisableFloatOnTopForChatPanel ) var alwaysDisableFloatOnTopForChatPanel
28+ @AppStorage ( \. chatPanelFloatOnTopOption ) var chatPanelFloatOnTopOption
2929 @AppStorage (
3030 \. keepFloatOnTopIfChatPanelAndXcodeOverlaps
3131 ) var keepFloatOnTopIfChatPanelAndXcodeOverlaps
@@ -299,20 +299,23 @@ struct ChatSettingsGeneralSectionView: View {
299299
300300 CodeHighlightThemePicker ( scenario: . chat)
301301
302- Toggle ( isOn: $settings. alwaysDisableFloatOnTopForChatPanel) {
303- Text ( " Always disable always-on-top. " )
302+ Picker ( " Always-on-top behavior " , selection: $settings. chatPanelFloatOnTopOption) {
303+ Text ( " Always " ) . tag ( UserDefaultPreferenceKeys . ChatPanelFloatOnTopOption. alwaysOnTop)
304+ Text ( " When Xcode is active " )
305+ . tag ( UserDefaultPreferenceKeys . ChatPanelFloatOnTopOption. onTopWhenXcodeIsActive)
306+ Text ( " Never " ) . tag ( UserDefaultPreferenceKeys . ChatPanelFloatOnTopOption. never)
304307 }
305308
306309 Toggle ( isOn: $settings. disableFloatOnTopWhenTheChatPanelIsDetached) {
307310 Text ( " Disable always-on-top when the chat panel is detached " )
308- } . disabled ( settings. alwaysDisableFloatOnTopForChatPanel )
311+ } . disabled ( settings. chatPanelFloatOnTopOption == . never )
309312
310313 Toggle ( isOn: $settings. keepFloatOnTopIfChatPanelAndXcodeOverlaps) {
311314 Text ( " Keep always-on-top if the chat panel and Xcode overlaps and Xcode is active " )
312315 }
313316 . disabled (
314317 !settings. disableFloatOnTopWhenTheChatPanelIsDetached
315- || settings. alwaysDisableFloatOnTopForChatPanel
318+ || settings. chatPanelFloatOnTopOption == . never
316319 )
317320 }
318321 }
0 commit comments