Get rid of the "current match" debouncer because now the selection and focus are synced by the navigator anyway, and that's fine.
Now the only debounce is on the open event coming from the navigator.
Also, change the navigator onFocus to respect the browserEvent's preserveFocus which should be ok
This commit is contained in:
Rob Lourens 2019-07-03 12:05:05 -07:00
parent cb555f0004
commit 2d1aec3ccf
2 changed files with 6 additions and 15 deletions

View file

@ -719,7 +719,11 @@ export class TreeResourceNavigator2<T, TFilterData> extends Disposable {
const isMouseEvent = e.browserEvent && e.browserEvent instanceof MouseEvent;
if (!isMouseEvent) {
this.open(true, false, false, e.browserEvent);
const preserveFocus = (e.browserEvent instanceof KeyboardEvent && typeof (<SelectionKeyboardEvent>e.browserEvent).preserveFocus === 'boolean') ?
!!(<SelectionKeyboardEvent>e.browserEvent).preserveFocus :
true;
this.open(preserveFocus, false, false, e.browserEvent);
}
}

View file

@ -12,7 +12,7 @@ import { ITreeContextMenuEvent, ITreeElement } from 'vs/base/browser/ui/tree/tre
import { IAction } from 'vs/base/common/actions';
import { Delayer } from 'vs/base/common/async';
import * as errors from 'vs/base/common/errors';
import { Emitter, Event } from 'vs/base/common/event';
import { Event } from 'vs/base/common/event';
import { Iterator } from 'vs/base/common/iterator';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
@ -117,7 +117,6 @@ export class SearchView extends ViewletPanel {
private currentSelectedFileMatch: FileMatch | undefined;
private readonly selectCurrentMatchEmitter: Emitter<string | undefined>;
private delayedRefresh: Delayer<void>;
private changedWhileHidden: boolean;
@ -175,10 +174,6 @@ export class SearchView extends ViewletPanel {
this._register(this.contextService.onDidChangeWorkbenchState(() => this.onDidChangeWorkbenchState()));
this._register(this.searchHistoryService.onDidClearHistory(() => this.clearHistory()));
this.selectCurrentMatchEmitter = this._register(new Emitter<string>());
this._register(Event.debounce(this.selectCurrentMatchEmitter.event, (l, e) => e, 100, /*leading=*/true)
(() => this.selectCurrentMatch()));
this.delayedRefresh = this._register(new Delayer<void>(250));
this.actions = [
@ -702,12 +697,6 @@ export class SearchView extends ViewletPanel {
});
}
selectCurrentMatch(): void {
const focused = this.tree.getFocus()[0];
const fakeKeyboardEvent = getSelectionKeyboardEvent(undefined, false);
this.tree.setSelection([focused], fakeKeyboardEvent);
}
selectNextMatch(): void {
const [selected] = this.tree.getSelection();
@ -741,7 +730,6 @@ export class SearchView extends ViewletPanel {
if (next) {
this.tree.setFocus([next], getSelectionKeyboardEvent(undefined, false));
this.tree.reveal(next);
this.selectCurrentMatchEmitter.fire(undefined);
}
}
@ -781,7 +769,6 @@ export class SearchView extends ViewletPanel {
if (prev) {
this.tree.setFocus([prev], getSelectionKeyboardEvent(undefined, false));
this.tree.reveal(prev);
this.selectCurrentMatchEmitter.fire(undefined);
}
}