@@ -12,7 +12,7 @@ import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
1212import { Disposable , MutableDisposable } from 'vs/base/common/lifecycle' ;
1313import { Event } from 'vs/base/common/event' ;
1414import { 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' ;
1616import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' ;
1717import { IInstantiationService , ServicesAccessor } from 'vs/platform/instantiation/common/instantiation' ;
1818import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions' ;
@@ -61,6 +61,7 @@ import { extractEditorsAndFilesDropData } from 'vs/platform/dnd/browser/dnd';
6161import { extname } from 'vs/base/common/resources' ;
6262import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil' ;
6363import { ILocalizedString } from 'vs/platform/action/common/action' ;
64+ import { registerNavigatableContainer } from 'vs/workbench/browser/actions/widgetNavigationCommands' ;
6465
6566export const DefaultViewsContext = new RawContextKey < boolean > ( 'defaultExtensionViews' , true ) ;
6667export const ExtensionsSortByContext = new RawContextKey < string > ( 'extensionsSortByValue' , '' ) ;
@@ -610,6 +611,22 @@ export class ExtensionsViewPaneContainer extends ViewPaneContainer implements IE
610611 } ) ) ;
611612
612613 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+ } ) ) ;
613630 }
614631
615632 override focus ( ) : void {
0 commit comments