Opening already opened editor should update its title (fixes #9794)
This commit is contained in:
parent
ae91d66546
commit
13b6e6d096
|
@ -239,6 +239,10 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
|
|||
const active = (group.count === 0) || !options || !options.inactive;
|
||||
group.openEditor(input, { active, pinned, index: options && options.index });
|
||||
|
||||
// indicate to the UI that an editor is about to open. we need to update the title because it could be that
|
||||
// the input is already opened but the title has changed and the UI should reflect that
|
||||
this.sideBySideControl.updateTitle({ group, editor: input });
|
||||
|
||||
// Return early if the editor is to be open inactive and there are other editors in this group to show
|
||||
if (!active) {
|
||||
return TPromise.as<BaseEditor>(null);
|
||||
|
|
|
@ -69,6 +69,8 @@ export interface ISideBySideEditorControl {
|
|||
|
||||
isDragging(): boolean;
|
||||
|
||||
updateTitle(identifier: IEditorIdentifier): void;
|
||||
|
||||
getInstantiationService(position: Position): IInstantiationService;
|
||||
getProgressBar(position: Position): ProgressBar;
|
||||
updateProgress(position: Position, state: ProgressState): void;
|
||||
|
@ -1692,6 +1694,10 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti
|
|||
return this.silos[position].child().getProperty(key);
|
||||
}
|
||||
|
||||
public updateTitle(identifier: IEditorIdentifier): void {
|
||||
this.onStacksChanged({ editor: identifier.editor, group: identifier.group });
|
||||
}
|
||||
|
||||
public updateProgress(position: Position, state: ProgressState): void {
|
||||
switch (state) {
|
||||
case ProgressState.INFINITE:
|
||||
|
|
|
@ -178,14 +178,24 @@ export class TabsTitleControl extends TitleControl {
|
|||
DOM.removeClass(this.titleContainer, 'active');
|
||||
}
|
||||
|
||||
// Tab styles
|
||||
// Tab label and styles
|
||||
this.context.getEditors().forEach((editor, index) => {
|
||||
const tabContainer = this.tabsContainer.children[index];
|
||||
if (tabContainer instanceof HTMLElement) {
|
||||
const tabLabel = <HTMLAnchorElement>(<HTMLElement>tabContainer.children[0]).children[0];
|
||||
|
||||
const isPinned = group.isPinned(editor);
|
||||
const isActive = group.isActive(editor);
|
||||
const isDirty = editor.isDirty();
|
||||
|
||||
const description = editor.getDescription(true) || '';
|
||||
const name = editor.getName();
|
||||
|
||||
// Label & Description
|
||||
tabContainer.setAttribute('aria-label', `tab, ${name}`);
|
||||
tabContainer.title = description;
|
||||
tabLabel.innerText = name;
|
||||
|
||||
// Pinned state
|
||||
if (isPinned) {
|
||||
DOM.addClass(tabContainer, 'pinned');
|
||||
|
@ -233,7 +243,7 @@ export class TabsTitleControl extends TitleControl {
|
|||
// Refresh Tabs
|
||||
this.refreshTabs(group);
|
||||
|
||||
// Update styles
|
||||
// Update Tabs
|
||||
this.doUpdate();
|
||||
}
|
||||
|
||||
|
@ -252,14 +262,12 @@ export class TabsTitleControl extends TitleControl {
|
|||
|
||||
// Add a tab for each opened editor
|
||||
this.context.getEditors().forEach(editor => {
|
||||
const description = editor.getDescription(true) || '';
|
||||
|
||||
// Tab Container
|
||||
const tabContainer = document.createElement('div');
|
||||
tabContainer.title = description;
|
||||
tabContainer.draggable = true;
|
||||
tabContainer.tabIndex = 0;
|
||||
tabContainer.setAttribute('role', 'presentation'); // cannot use role "tab" here due to https://github.com/Microsoft/vscode/issues/8659
|
||||
tabContainer.setAttribute('aria-label', `tab, ${editor.getName()}`);
|
||||
DOM.addClass(tabContainer, 'tab monaco-editor-background');
|
||||
tabContainers.push(tabContainer);
|
||||
|
||||
|
@ -270,7 +278,6 @@ export class TabsTitleControl extends TitleControl {
|
|||
|
||||
// Tab Label
|
||||
const tabLabel = document.createElement('a');
|
||||
tabLabel.innerText = editor.getName();
|
||||
tabLabelContainer.appendChild(tabLabel);
|
||||
|
||||
// Tab Close
|
||||
|
|
Loading…
Reference in a new issue