mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-29 09:35:38 -05:00
Fix modal event propagation (#8050)
* Fix event propagation * Remove unneeded onkeyup method * Move event handling code into SQL classes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user