@@ -109,38 +109,35 @@ abstract class AbstractChatAttachmentWidget extends Disposable {
109
109
this . _onDidDelete . fire ( e . browserEvent ) ;
110
110
}
111
111
} ) ) ;
112
- if ( this . options . shouldFocusClearButton ) {
113
- clearButton . focus ( ) ;
114
- }
115
112
}
116
113
117
114
protected addResourceOpenHandlers ( resource : URI , range : IRange | undefined ) : void {
118
115
this . element . style . cursor = 'pointer' ;
119
- this . _register ( dom . addDisposableListener ( this . element , dom . EventType . CLICK , ( e : MouseEvent ) => {
116
+ this . _register ( dom . addDisposableListener ( this . element , dom . EventType . CLICK , async ( e : MouseEvent ) => {
120
117
dom . EventHelper . stop ( e , true ) ;
121
118
if ( this . attachment . kind === 'directory' ) {
122
- this . openResource ( resource , true ) ;
119
+ await this . openResource ( resource , true ) ;
123
120
} else {
124
- this . openResource ( resource , false , range ) ;
121
+ await this . openResource ( resource , false , range ) ;
125
122
}
126
123
} ) ) ;
127
124
128
- this . _register ( dom . addDisposableListener ( this . element , dom . EventType . KEY_DOWN , ( e : KeyboardEvent ) => {
125
+ this . _register ( dom . addDisposableListener ( this . element , dom . EventType . KEY_DOWN , async ( e : KeyboardEvent ) => {
129
126
const event = new StandardKeyboardEvent ( e ) ;
130
127
if ( event . equals ( KeyCode . Enter ) || event . equals ( KeyCode . Space ) ) {
131
128
dom . EventHelper . stop ( e , true ) ;
132
129
if ( this . attachment . kind === 'directory' ) {
133
- this . openResource ( resource , true ) ;
130
+ await this . openResource ( resource , true ) ;
134
131
} else {
135
- this . openResource ( resource , false , range ) ;
132
+ await this . openResource ( resource , false , range ) ;
136
133
}
137
134
}
138
135
} ) ) ;
139
136
}
140
137
141
- protected openResource ( resource : URI , isDirectory : true ) : void ;
142
- protected openResource ( resource : URI , isDirectory : false , range : IRange | undefined ) : void ;
143
- protected openResource ( resource : URI , isDirectory ?: boolean , range ?: IRange ) : void {
138
+ protected async openResource ( resource : URI , isDirectory : true ) : Promise < void > ;
139
+ protected async openResource ( resource : URI , isDirectory : false , range : IRange | undefined ) : Promise < void > ;
140
+ protected async openResource ( resource : URI , isDirectory ?: boolean , range ?: IRange ) : Promise < void > {
144
141
if ( isDirectory ) {
145
142
// Reveal Directory in explorer
146
143
this . commandService . executeCommand ( revealInSideBarCommand . id , resource ) ;
@@ -151,9 +148,10 @@ abstract class AbstractChatAttachmentWidget extends Disposable {
151
148
const openTextEditorOptions : ITextEditorOptions | undefined = range ? { selection : range } : undefined ;
152
149
const options : OpenInternalOptions = {
153
150
fromUserGesture : true ,
154
- editorOptions : openTextEditorOptions ,
151
+ editorOptions : { ... openTextEditorOptions , preserveFocus : true } ,
155
152
} ;
156
- this . openerService . open ( resource , options ) ;
153
+ await this . openerService . open ( resource , options ) ;
154
+ this . element . focus ( ) ;
157
155
}
158
156
}
159
157
@@ -257,9 +255,9 @@ export class ImageAttachmentWidget extends AbstractChatAttachmentWidget {
257
255
258
256
const ref = attachment . references ?. [ 0 ] ?. reference ;
259
257
resource = ref && URI . isUri ( ref ) ? ref : undefined ;
260
- const clickHandler = ( ) => {
258
+ const clickHandler = async ( ) => {
261
259
if ( resource ) {
262
- this . openResource ( resource , false , undefined ) ;
260
+ await this . openResource ( resource , false , undefined ) ;
263
261
}
264
262
} ;
265
263
type AttachImageEvent = {
@@ -588,7 +586,7 @@ export class NotebookCellOutputChatAttachmentWidget extends AbstractChatAttachme
588
586
ariaLabel = this . getAriaLabel ( attachment ) ;
589
587
}
590
588
591
- const clickHandler = ( ) => this . openResource ( resource , false , undefined ) ;
589
+ const clickHandler = async ( ) => await this . openResource ( resource , false , undefined ) ;
592
590
const currentLanguageModelName = this . currentLanguageModel ? this . languageModelsService . lookupLanguageModel ( this . currentLanguageModel . identifier ) ?. name ?? this . currentLanguageModel . identifier : 'unknown' ;
593
591
const buffer = this . getOutputItem ( resource , attachment ) ?. data . buffer ?? new Uint8Array ( ) ;
594
592
this . _register ( createImageElements ( resource , attachment . name , attachment . name , this . element , buffer , this . hoverService , ariaLabel , currentLanguageModelName , clickHandler , this . currentLanguageModel , attachment . omittedState ) ) ;
0 commit comments