propagate horizontal scrolling setting update through workbench widgets

上级 5dd0eb4e
...@@ -7,7 +7,7 @@ import 'vs/css!./list'; ...@@ -7,7 +7,7 @@ import 'vs/css!./list';
import { IDisposable, Disposable } from 'vs/base/common/lifecycle'; import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
import { range } from 'vs/base/common/arrays'; import { range } from 'vs/base/common/arrays';
import { IListVirtualDelegate, IListRenderer, IListEvent, IListContextMenuEvent } from './list'; import { IListVirtualDelegate, IListRenderer, IListEvent, IListContextMenuEvent } from './list';
import { List, IListStyles, IListOptions, IListAccessibilityProvider } from './listWidget'; import { List, IListStyles, IListOptions, IListAccessibilityProvider, IListOptionsUpdate } from './listWidget';
import { IPagedModel } from 'vs/base/common/paging'; import { IPagedModel } from 'vs/base/common/paging';
import { Event } from 'vs/base/common/event'; import { Event } from 'vs/base/common/event';
import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { CancellationTokenSource } from 'vs/base/common/cancellation';
...@@ -136,6 +136,10 @@ export class PagedList<T> implements IDisposable { ...@@ -136,6 +136,10 @@ export class PagedList<T> implements IDisposable {
this.list = new List(user, container, virtualDelegate, pagedRenderers, fromPagedListOptions(modelProvider, options)); this.list = new List(user, container, virtualDelegate, pagedRenderers, fromPagedListOptions(modelProvider, options));
} }
updateOptions(options: IListOptionsUpdate) {
this.list.updateOptions(options);
}
getHTMLElement(): HTMLElement { getHTMLElement(): HTMLElement {
return this.list.getHTMLElement(); return this.list.getHTMLElement();
} }
......
...@@ -1361,7 +1361,8 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable ...@@ -1361,7 +1361,8 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
this.view.updateOptions({ this.view.updateOptions({
enableKeyboardNavigation: this._options.simpleKeyboardNavigation, enableKeyboardNavigation: this._options.simpleKeyboardNavigation,
automaticKeyboardNavigation: this._options.automaticKeyboardNavigation, automaticKeyboardNavigation: this._options.automaticKeyboardNavigation,
smoothScrolling: this._options.smoothScrolling smoothScrolling: this._options.smoothScrolling,
horizontalScrolling: this._options.horizontalScrolling
}); });
if (this.typeFilterController) { if (this.typeFilterController) {
......
...@@ -244,6 +244,7 @@ export class WorkbenchList<T> extends List<T> { ...@@ -244,6 +244,7 @@ export class WorkbenchList<T> extends List<T> {
private listHasSelectionOrFocus: IContextKey<boolean>; private listHasSelectionOrFocus: IContextKey<boolean>;
private listDoubleSelection: IContextKey<boolean>; private listDoubleSelection: IContextKey<boolean>;
private listMultiSelection: IContextKey<boolean>; private listMultiSelection: IContextKey<boolean>;
private horizontalScrolling: boolean | undefined;
private _styler: IDisposable | undefined; private _styler: IDisposable | undefined;
private _useAltAsMultipleSelectionModifier: boolean; private _useAltAsMultipleSelectionModifier: boolean;
...@@ -284,6 +285,7 @@ export class WorkbenchList<T> extends List<T> { ...@@ -284,6 +285,7 @@ export class WorkbenchList<T> extends List<T> {
this.listHasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService); this.listHasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService);
this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService); this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService);
this.listMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService); this.listMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService);
this.horizontalScrolling = options.horizontalScrolling;
this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService); this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);
...@@ -340,6 +342,10 @@ export class WorkbenchList<T> extends List<T> { ...@@ -340,6 +342,10 @@ export class WorkbenchList<T> extends List<T> {
if (e.affectsConfiguration(multiSelectModifierSettingKey)) { if (e.affectsConfiguration(multiSelectModifierSettingKey)) {
this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService); this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService);
} }
if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {
const horizontalScrolling = this.configurationService.getValue<boolean>(horizontalScrollingKey);
this.updateOptions({ horizontalScrolling });
}
})); }));
} }
...@@ -360,6 +366,7 @@ export class WorkbenchPagedList<T> extends PagedList<T> { ...@@ -360,6 +366,7 @@ export class WorkbenchPagedList<T> extends PagedList<T> {
private readonly disposables: DisposableStore; private readonly disposables: DisposableStore;
private _useAltAsMultipleSelectionModifier: boolean; private _useAltAsMultipleSelectionModifier: boolean;
private horizontalScrolling: boolean | undefined;
constructor( constructor(
user: string, user: string,
...@@ -389,6 +396,7 @@ export class WorkbenchPagedList<T> extends PagedList<T> { ...@@ -389,6 +396,7 @@ export class WorkbenchPagedList<T> extends PagedList<T> {
this.contextKeyService = createScopedContextKeyService(contextKeyService, this); this.contextKeyService = createScopedContextKeyService(contextKeyService, this);
this.configurationService = configurationService; this.configurationService = configurationService;
this.horizontalScrolling = options.horizontalScrolling;
const listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService); const listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);
listSupportsMultiSelect.set(!(options.multipleSelectionSupport === false)); listSupportsMultiSelect.set(!(options.multipleSelectionSupport === false));
...@@ -410,6 +418,10 @@ export class WorkbenchPagedList<T> extends PagedList<T> { ...@@ -410,6 +418,10 @@ export class WorkbenchPagedList<T> extends PagedList<T> {
if (e.affectsConfiguration(multiSelectModifierSettingKey)) { if (e.affectsConfiguration(multiSelectModifierSettingKey)) {
this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService); this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService);
} }
if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {
const horizontalScrolling = this.configurationService.getValue<boolean>(horizontalScrollingKey);
this.updateOptions({ horizontalScrolling });
}
})); }));
} }
...@@ -608,7 +620,7 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void> ...@@ -608,7 +620,7 @@ export class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void>
const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchObjectTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService); const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchObjectTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);
super(user, container, delegate, renderers, treeOptions); super(user, container, delegate, renderers, treeOptions);
this.disposables.add(disposable); this.disposables.add(disposable);
this.internals = new WorkbenchTreeInternals(this, treeOptions, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService); this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);
this.disposables.add(this.internals); this.disposables.add(this.internals);
} }
} }
...@@ -643,7 +655,7 @@ export class WorkbenchCompressibleObjectTree<T extends NonNullable<any>, TFilter ...@@ -643,7 +655,7 @@ export class WorkbenchCompressibleObjectTree<T extends NonNullable<any>, TFilter
const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchCompressibleObjectTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService); const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchCompressibleObjectTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);
super(user, container, delegate, renderers, treeOptions); super(user, container, delegate, renderers, treeOptions);
this.disposables.add(disposable); this.disposables.add(disposable);
this.internals = new WorkbenchTreeInternals(this, treeOptions, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService); this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);
this.disposables.add(this.internals); this.disposables.add(this.internals);
} }
...@@ -687,7 +699,7 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T ...@@ -687,7 +699,7 @@ export class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<T
const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchDataTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService); const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchDataTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);
super(user, container, delegate, renderers, dataSource, treeOptions); super(user, container, delegate, renderers, dataSource, treeOptions);
this.disposables.add(disposable); this.disposables.add(disposable);
this.internals = new WorkbenchTreeInternals(this, treeOptions, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService); this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);
this.disposables.add(this.internals); this.disposables.add(this.internals);
} }
...@@ -731,7 +743,7 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async ...@@ -731,7 +743,7 @@ export class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends Async
const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchAsyncDataTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService); const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchAsyncDataTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);
super(user, container, delegate, renderers, dataSource, treeOptions); super(user, container, delegate, renderers, dataSource, treeOptions);
this.disposables.add(disposable); this.disposables.add(disposable);
this.internals = new WorkbenchTreeInternals(this, treeOptions, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService); this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);
this.disposables.add(this.internals); this.disposables.add(this.internals);
} }
...@@ -773,7 +785,7 @@ export class WorkbenchCompressibleAsyncDataTree<TInput, T, TFilterData = void> e ...@@ -773,7 +785,7 @@ export class WorkbenchCompressibleAsyncDataTree<TInput, T, TFilterData = void> e
const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchCompressibleAsyncDataTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService); const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble<T, TFilterData, IWorkbenchCompressibleAsyncDataTreeOptions<T, TFilterData>>(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);
super(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, treeOptions); super(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, treeOptions);
this.disposables.add(disposable); this.disposables.add(disposable);
this.internals = new WorkbenchTreeInternals(this, treeOptions, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService); this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);
this.disposables.add(this.internals); this.disposables.add(this.internals);
} }
} }
...@@ -806,7 +818,7 @@ function workbenchTreeDataPreamble<T, TFilterData, TOptions extends IAbstractTre ...@@ -806,7 +818,7 @@ function workbenchTreeDataPreamble<T, TFilterData, TOptions extends IAbstractTre
const accessibilityOn = accessibilityService.isScreenReaderOptimized(); const accessibilityOn = accessibilityService.isScreenReaderOptimized();
const keyboardNavigation = accessibilityOn ? 'simple' : configurationService.getValue<string>(keyboardNavigationSettingKey); const keyboardNavigation = accessibilityOn ? 'simple' : configurationService.getValue<string>(keyboardNavigationSettingKey);
const horizontalScrolling = typeof options.horizontalScrolling !== 'undefined' ? options.horizontalScrolling : configurationService.getValue<boolean>(horizontalScrollingKey); const horizontalScrolling = options.horizontalScrolling !== undefined ? options.horizontalScrolling : configurationService.getValue<boolean>(horizontalScrollingKey);
const openOnSingleClick = useSingleClickToOpen(configurationService); const openOnSingleClick = useSingleClickToOpen(configurationService);
const [workbenchListOptions, disposable] = toWorkbenchListOptions(options, configurationService, keybindingService); const [workbenchListOptions, disposable] = toWorkbenchListOptions(options, configurationService, keybindingService);
const additionalScrollHeight = options.additionalScrollHeight; const additionalScrollHeight = options.additionalScrollHeight;
...@@ -896,33 +908,37 @@ class WorkbenchTreeInternals<TInput, T, TFilterData> { ...@@ -896,33 +908,37 @@ class WorkbenchTreeInternals<TInput, T, TFilterData> {
this.hasSelectionOrFocus.set(selection.length > 0 || focus.length > 0); this.hasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);
}), }),
configurationService.onDidChangeConfiguration(e => { configurationService.onDidChangeConfiguration(e => {
let options: any = {}; let newOptions: any = {};
if (e.affectsConfiguration(openModeSettingKey)) { if (e.affectsConfiguration(openModeSettingKey)) {
options = { ...options, openOnSingleClick: useSingleClickToOpen(configurationService) }; newOptions = { ...newOptions, openOnSingleClick: useSingleClickToOpen(configurationService) };
} }
if (e.affectsConfiguration(multiSelectModifierSettingKey)) { if (e.affectsConfiguration(multiSelectModifierSettingKey)) {
this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService); this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);
} }
if (e.affectsConfiguration(treeIndentKey)) { if (e.affectsConfiguration(treeIndentKey)) {
const indent = configurationService.getValue<number>(treeIndentKey); const indent = configurationService.getValue<number>(treeIndentKey);
options = { ...options, indent }; newOptions = { ...newOptions, indent };
} }
if (e.affectsConfiguration(treeRenderIndentGuidesKey)) { if (e.affectsConfiguration(treeRenderIndentGuidesKey)) {
const renderIndentGuides = configurationService.getValue<RenderIndentGuides>(treeRenderIndentGuidesKey); const renderIndentGuides = configurationService.getValue<RenderIndentGuides>(treeRenderIndentGuidesKey);
options = { ...options, renderIndentGuides }; newOptions = { ...newOptions, renderIndentGuides };
} }
if (e.affectsConfiguration(listSmoothScrolling)) { if (e.affectsConfiguration(listSmoothScrolling)) {
const smoothScrolling = configurationService.getValue<boolean>(listSmoothScrolling); const smoothScrolling = configurationService.getValue<boolean>(listSmoothScrolling);
options = { ...options, smoothScrolling }; newOptions = { ...newOptions, smoothScrolling };
} }
if (e.affectsConfiguration(keyboardNavigationSettingKey)) { if (e.affectsConfiguration(keyboardNavigationSettingKey)) {
updateKeyboardNavigation(); updateKeyboardNavigation();
} }
if (e.affectsConfiguration(automaticKeyboardNavigationSettingKey)) { if (e.affectsConfiguration(automaticKeyboardNavigationSettingKey)) {
options = { ...options, automaticKeyboardNavigation: getAutomaticKeyboardNavigation() }; newOptions = { ...newOptions, automaticKeyboardNavigation: getAutomaticKeyboardNavigation() };
}
if (e.affectsConfiguration(horizontalScrollingKey) && options.horizontalScrolling === undefined) {
const horizontalScrolling = configurationService.getValue<boolean>(horizontalScrollingKey);
newOptions = { ...newOptions, horizontalScrolling };
} }
if (Object.keys(options).length > 0) { if (Object.keys(newOptions).length > 0) {
tree.updateOptions(options); tree.updateOptions(newOptions);
} }
}), }),
this.contextKeyService.onDidChangeContext(e => { this.contextKeyService.onDidChangeContext(e => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册