Skip to content

Commit

Permalink
Fix #93955. Allow tab through cell buttons.
Browse files Browse the repository at this point in the history
  • Loading branch information
rebornix committed Apr 8, 2020
1 parent 52d27e2 commit c22cc2b
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
Expand Up @@ -215,6 +215,7 @@
cursor: auto;
}

.monaco-workbench .part.editor > .content .notebook-editor > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row .cell-bottom-toolbar-container:focus-within,
.monaco-workbench .part.editor > .content .notebook-editor > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row .cell-bottom-toolbar-container:hover {
opacity: 1;
}
Expand Down
Expand Up @@ -148,6 +148,7 @@ abstract class AbstractCellRenderer {
DOM.append(container, $('.seperator'));
const addCodeCell = DOM.append(container, $('span.button'));
addCodeCell.innerHTML = renderCodicons(escape(`$(add) Code `));
addCodeCell.tabIndex = 0;
const insertCellBelow = this.instantiationService.createInstance(InsertCodeCellAction);

disposables.add(DOM.addDisposableListener(addCodeCell, DOM.EventType.CLICK, () => {
Expand All @@ -157,6 +158,7 @@ abstract class AbstractCellRenderer {
DOM.append(container, $('.seperator-short'));
const addMarkdownCell = DOM.append(container, $('span.button'));
addMarkdownCell.innerHTML = renderCodicons(escape('$(add) Markdown '));
addMarkdownCell.tabIndex = 0;
const insertMarkdownBelow = this.instantiationService.createInstance(InsertMarkdownCellAction);
disposables.add(DOM.addDisposableListener(addMarkdownCell, DOM.EventType.CLICK, () => {
this.actionRunner.run(insertMarkdownBelow, context);
Expand Down Expand Up @@ -375,7 +377,6 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
const runToolbar = this.createToolbar(runButtonContainer);
disposables.add(runToolbar);

const bottomCellContainer = DOM.append(container, $('.cell-bottom-toolbar-container'));

const executionOrderLabel = DOM.append(runButtonContainer, $('div.execution-count-label'));

Expand All @@ -398,6 +399,8 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
progressBar.hide();
disposables.add(progressBar);

const bottomCellContainer = DOM.append(container, $('.cell-bottom-toolbar-container'));

return {
container,
cellContainer,
Expand Down
Expand Up @@ -16,6 +16,8 @@ import { INotebookService } from 'vs/workbench/contrib/notebook/browser/notebook
import { getResizesObserver } from 'vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver';
import { CodeCellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel';
import { CellOutputKind, IOutput, IRenderOutput, ITransformedDisplayOutputDto } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode } from 'vs/base/common/keyCodes';

interface IMimeTypeRenderer extends IQuickPickItem {
index: number;
Expand Down Expand Up @@ -255,12 +257,26 @@ export class CodeCell extends Disposable {
outputItemDiv.style.position = 'relative';
const mimeTypePicker = DOM.$('.multi-mimetype-output');
DOM.addClasses(mimeTypePicker, 'codicon', 'codicon-code');
mimeTypePicker.tabIndex = 0;
mimeTypePicker.title = nls.localize('mimeTypePicker', "Choose a different output mimetype");
outputItemDiv.appendChild(mimeTypePicker);
this.outputResizeListeners.get(currOutput)!.add(DOM.addStandardDisposableListener(mimeTypePicker, 'mousedown', async e => {
e.preventDefault();
e.stopPropagation();
await this.pickActiveMimeTypeRenderer(transformedDisplayOutput);
if (e.leftButton) {
e.preventDefault();
e.stopPropagation();
await this.pickActiveMimeTypeRenderer(transformedDisplayOutput);
}
}));

this.outputResizeListeners.get(currOutput)!.add((DOM.addDisposableListener(mimeTypePicker, DOM.EventType.KEY_DOWN, async e => {
const event = new StandardKeyboardEvent(e);
if ((event.equals(KeyCode.Enter) || event.equals(KeyCode.Space))) {
e.preventDefault();
e.stopPropagation();
await this.pickActiveMimeTypeRenderer(transformedDisplayOutput);
}
})));

}
let pickedMimeTypeRenderer = currOutput.orderedMimeTypes[currOutput.pickedMimeTypeIndex];

Expand Down Expand Up @@ -341,7 +357,7 @@ export class CodeCell extends Disposable {

generateRendererInfo(renderId: number | undefined): string {
if (renderId === undefined || renderId === -1) {
return 'builtin';
return nls.localize('builtinRenderInfo', "built-in");
}

let renderInfo = this.notebookService.getRendererInfo(renderId);
Expand All @@ -350,7 +366,7 @@ export class CodeCell extends Disposable {
return renderInfo.id.value;
}

return 'builtin';
return nls.localize('builtinRenderInfo', "built-in");
}

async pickActiveMimeTypeRenderer(output: ITransformedDisplayOutputDto) {
Expand Down

0 comments on commit c22cc2b

Please sign in to comment.