mirror of
https://github.com/Microsoft/vscode
synced 2024-10-05 19:02:54 +00:00
De-select output for focus cell container
commands (#209269)
* pass message to de-select when container is selected from output * clear selection in more cases
This commit is contained in:
parent
e169401ec2
commit
16a39cb720
|
@ -2427,6 +2427,8 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditorD
|
|||
(itemDOM.ownerDocument.activeElement as HTMLElement).blur();
|
||||
}
|
||||
|
||||
this._webview?.blurOutput();
|
||||
|
||||
cell.updateEditState(CellEditState.Preview, 'focusNotebookCell');
|
||||
cell.focusMode = CellFocusMode.Container;
|
||||
|
||||
|
|
|
@ -1729,6 +1729,16 @@ export class BackLayerWebView<T extends ICommonCellInfo> extends Themable {
|
|||
});
|
||||
}
|
||||
|
||||
blurOutput() {
|
||||
if (this._disposed) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._sendMessageToWebview({
|
||||
type: 'blur-output'
|
||||
});
|
||||
}
|
||||
|
||||
async find(query: string, options: { wholeWord?: boolean; caseSensitive?: boolean; includeMarkup: boolean; includeOutput: boolean; shouldGetSearchPreviewInfo: boolean; ownerID: string }): Promise<IFindMatch[]> {
|
||||
if (query === '') {
|
||||
this._sendMessageToWebview({
|
||||
|
|
|
@ -69,7 +69,7 @@ export interface IScrollAckMessage extends BaseToWebviewMessage {
|
|||
readonly version: number;
|
||||
}
|
||||
|
||||
export interface IBlurOutputMessage extends BaseToWebviewMessage {
|
||||
export interface IFocusEditorMessage extends BaseToWebviewMessage {
|
||||
readonly type: 'focus-editor';
|
||||
readonly cellId: string;
|
||||
readonly focusNext?: boolean;
|
||||
|
@ -262,6 +262,10 @@ export interface IFocusOutputMessage {
|
|||
readonly alternateId?: string;
|
||||
}
|
||||
|
||||
export interface IBlurOutputMessage {
|
||||
readonly type: 'blur-output';
|
||||
}
|
||||
|
||||
export interface IAckOutputHeight {
|
||||
readonly cellId: string;
|
||||
readonly outputId: string;
|
||||
|
@ -494,7 +498,7 @@ export type FromWebviewMessage = WebviewInitialized |
|
|||
IScrollToRevealMessage |
|
||||
IWheelMessage |
|
||||
IScrollAckMessage |
|
||||
IBlurOutputMessage |
|
||||
IFocusEditorMessage |
|
||||
ICustomKernelMessage |
|
||||
ICustomRendererMessage |
|
||||
IClickedDataUrlMessage |
|
||||
|
@ -520,6 +524,7 @@ export type FromWebviewMessage = WebviewInitialized |
|
|||
|
||||
export type ToWebviewMessage = IClearMessage |
|
||||
IFocusOutputMessage |
|
||||
IBlurOutputMessage |
|
||||
IAckOutputHeightMessage |
|
||||
ICreationRequestMessage |
|
||||
IViewScrollTopRequestMessage |
|
||||
|
|
|
@ -271,6 +271,15 @@ async function webviewPreloads(ctx: PreloadContext) {
|
|||
postNotebookMessage<webviewMessages.IOutputFocusMessage>('outputFocus', outputFocus);
|
||||
}
|
||||
};
|
||||
|
||||
const blurOutput = () => {
|
||||
const selection = window.getSelection();
|
||||
if (!selection) {
|
||||
return;
|
||||
}
|
||||
selection.removeAllRanges();
|
||||
};
|
||||
|
||||
const selectOutputContents = (cellOrOutputId: string) => {
|
||||
const selection = window.getSelection();
|
||||
if (!selection) {
|
||||
|
@ -689,7 +698,7 @@ async function webviewPreloads(ctx: PreloadContext) {
|
|||
element.id = `focus-sink-${cellId}`;
|
||||
element.tabIndex = 0;
|
||||
element.addEventListener('focus', () => {
|
||||
postNotebookMessage<webviewMessages.IBlurOutputMessage>('focus-editor', {
|
||||
postNotebookMessage<webviewMessages.IFocusEditorMessage>('focus-editor', {
|
||||
cellId: cellId,
|
||||
focusNext
|
||||
});
|
||||
|
@ -1732,6 +1741,9 @@ async function webviewPreloads(ctx: PreloadContext) {
|
|||
case 'focus-output':
|
||||
focusFirstFocusableOrContainerInOutput(event.data.cellOrOutputId, event.data.alternateId);
|
||||
break;
|
||||
case 'blur-output':
|
||||
blurOutput();
|
||||
break;
|
||||
case 'select-output-contents':
|
||||
selectOutputContents(event.data.cellOrOutputId);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue