Fix modal event propagation (#8050)

* Fix event propagation

* Remove unneeded onkeyup method

* Move event handling code into SQL classes
This commit is contained in:
Charles Gagnon
2019-10-30 11:29:01 -07:00
committed by GitHub
parent 004297aea6
commit 82e5221024
8 changed files with 59 additions and 19 deletions

View File

@@ -9,6 +9,7 @@ import { generateUuid } from 'vs/base/common/uuid';
import * as DOM from 'vs/base/browser/dom';
import { Event, Emitter } from 'vs/base/common/event';
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode } from 'vs/base/common/keyCodes';
export interface Template {
label: HTMLElement;
@@ -124,10 +125,24 @@ export class DropdownController extends TreeDefaults.DefaultController {
return response;
}
public onKeyDown(tree: tree.ITree, event: IKeyboardEvent): boolean {
// The enter key press is handled on key up by our base class (DefaultController) but
// we want to stop it here because we know we're going to handle it (by selecting the item)
// and letting it propagate up means that other controls may incorrectly handle it first
// if they're listening to onKeyDown
const response = super.onKeyDown(tree, event);
if (event.keyCode === KeyCode.Enter) {
DOM.EventHelper.stop(event, true);
return true;
}
return response;
}
protected onEnter(tree: tree.ITree, event: IKeyboardEvent): boolean {
let response = super.onEnter(tree, event);
if (response) {
this._onSelectionChange.fire(tree.getSelection()[0]);
DOM.EventHelper.stop(event, true);
}
return response;
}