@@ -12,7 +12,7 @@ import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
12
12
import { Disposable , MutableDisposable } from 'vs/base/common/lifecycle' ;
13
13
import { Event } from 'vs/base/common/event' ;
14
14
import { Action } from 'vs/base/common/actions' ;
15
- import { append , $ , Dimension , hide , show , DragAndDropObserver } from 'vs/base/browser/dom' ;
15
+ import { append , $ , Dimension , hide , show , DragAndDropObserver , trackFocus } from 'vs/base/browser/dom' ;
16
16
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' ;
17
17
import { IInstantiationService , ServicesAccessor } from 'vs/platform/instantiation/common/instantiation' ;
18
18
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions' ;
@@ -61,6 +61,7 @@ import { extractEditorsAndFilesDropData } from 'vs/platform/dnd/browser/dnd';
61
61
import { extname } from 'vs/base/common/resources' ;
62
62
import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil' ;
63
63
import { ILocalizedString } from 'vs/platform/action/common/action' ;
64
+ import { registerNavigatableContainer } from 'vs/workbench/browser/actions/widgetNavigationCommands' ;
64
65
65
66
export const DefaultViewsContext = new RawContextKey < boolean > ( 'defaultExtensionViews' , true ) ;
66
67
export const ExtensionsSortByContext = new RawContextKey < string > ( 'extensionsSortByValue' , '' ) ;
@@ -610,6 +611,22 @@ export class ExtensionsViewPaneContainer extends ViewPaneContainer implements IE
610
611
} ) ) ;
611
612
612
613
super . create ( append ( this . root , $ ( '.extensions' ) ) ) ;
614
+
615
+ const focusTracker = this . _register ( trackFocus ( this . root ) ) ;
616
+ const isSearchBoxFocused = ( ) => this . searchBox ?. inputWidget . hasWidgetFocus ( ) ;
617
+ this . _register ( registerNavigatableContainer ( {
618
+ focusNotifiers : [ focusTracker ] ,
619
+ focusNextWidget : ( ) => {
620
+ if ( isSearchBoxFocused ( ) ) {
621
+ this . focusListView ( ) ;
622
+ }
623
+ } ,
624
+ focusPreviousWidget : ( ) => {
625
+ if ( ! isSearchBoxFocused ( ) ) {
626
+ this . searchBox ?. focus ( ) ;
627
+ }
628
+ }
629
+ } ) ) ;
613
630
}
614
631
615
632
override focus ( ) : void {
0 commit comments