Don't hold onto font in TerminalInstance
This commit is contained in:
parent
e95af24f5a
commit
434e1e996f
|
@ -12,7 +12,7 @@ import {Builder, Dimension} from 'vs/base/browser/builder';
|
|||
import {TPromise} from 'vs/base/common/winjs.base';
|
||||
import {createDecorator} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {RawContextKey, ContextKeyExpr} from 'vs/platform/contextkey/common/contextkey';
|
||||
import {TerminalConfigHelper, ITerminalFont} from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper';
|
||||
import {TerminalConfigHelper} from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper';
|
||||
|
||||
export const TERMINAL_PANEL_ID = 'workbench.panel.terminal';
|
||||
|
||||
|
@ -130,6 +130,5 @@ export interface ITerminalInstance {
|
|||
layout(dimension: Dimension): void;
|
||||
setCursorBlink(blink: boolean): void;
|
||||
setCommandsToSkipShell(commands: string[]): void;
|
||||
setFont(font: ITerminalFont): void;
|
||||
setVisible(visible: boolean): void;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ import {IKeybindingService} from 'vs/platform/keybinding/common/keybinding';
|
|||
import {IMessageService, Severity} from 'vs/platform/message/common/message';
|
||||
import {ITerminalInstance, ITerminalService} from 'vs/workbench/parts/terminal/electron-browser/terminal';
|
||||
import {IStringDictionary} from 'vs/base/common/collections';
|
||||
import {TerminalConfigHelper, IShell, ITerminalFont} from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper';
|
||||
import {TerminalConfigHelper, IShell} from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper';
|
||||
import {IWorkspaceContextService, IWorkspace} from 'vs/platform/workspace/common/workspace';
|
||||
import {Keybinding} from 'vs/base/common/keyCodes';
|
||||
import {StandardKeyboardEvent} from 'vs/base/browser/keyboardEvent';
|
||||
|
@ -45,8 +45,6 @@ export class TerminalInstance implements ITerminalInstance {
|
|||
// TODO: Improve HTML element names?
|
||||
private wrapperElement: HTMLDivElement;
|
||||
private terminalDomElement: HTMLDivElement;
|
||||
// TODO: Is font needed, just grab off configHelper?
|
||||
private font: ITerminalFont;
|
||||
|
||||
public constructor(
|
||||
private terminalFocusContextKey: IContextKey<boolean>,
|
||||
|
@ -74,8 +72,6 @@ export class TerminalInstance implements ITerminalInstance {
|
|||
throw new Error('The terminal instance has already been attached to a container');
|
||||
}
|
||||
|
||||
this.setFont(this.configHelper.getFont());
|
||||
|
||||
this.wrapperElement = document.createElement('div');
|
||||
DOM.addClass(this.wrapperElement, 'terminal-wrapper');
|
||||
this.terminalDomElement = document.createElement('div');
|
||||
|
@ -281,10 +277,6 @@ export class TerminalInstance implements ITerminalInstance {
|
|||
return parts.join('_') + '.UTF-8';
|
||||
}
|
||||
|
||||
public setFont(font: ITerminalFont): void {
|
||||
this.font = font;
|
||||
}
|
||||
|
||||
public setCursorBlink(blink: boolean): void {
|
||||
if (this.xterm && this.xterm.cursorBlink !== blink) {
|
||||
this.xterm.cursorBlink = blink;
|
||||
|
@ -301,7 +293,8 @@ export class TerminalInstance implements ITerminalInstance {
|
|||
}
|
||||
|
||||
public layout(dimension: Dimension): void {
|
||||
if (!this.font || !this.font.charWidth || !this.font.charHeight) {
|
||||
let font = this.configHelper.getFont();
|
||||
if (!font || !font.charWidth || !font.charHeight) {
|
||||
return;
|
||||
}
|
||||
if (!dimension.height) { // Minimized
|
||||
|
@ -309,8 +302,8 @@ export class TerminalInstance implements ITerminalInstance {
|
|||
}
|
||||
let leftPadding = parseInt(getComputedStyle(document.querySelector('.terminal-outer-container')).paddingLeft.split('px')[0], 10);
|
||||
let innerWidth = dimension.width - leftPadding;
|
||||
let cols = Math.floor(innerWidth / this.font.charWidth);
|
||||
let rows = Math.floor(dimension.height / this.font.charHeight);
|
||||
let cols = Math.floor(innerWidth / font.charWidth);
|
||||
let rows = Math.floor(dimension.height / font.charHeight);
|
||||
if (this.xterm) {
|
||||
this.xterm.resize(cols, rows);
|
||||
this.xterm.element.style.width = innerWidth + 'px';
|
||||
|
|
|
@ -79,9 +79,7 @@ export class TerminalPanel extends Panel {
|
|||
if (!dimension) {
|
||||
return;
|
||||
}
|
||||
console.log('layout panel', dimension);
|
||||
this.terminalService.terminalInstances.forEach((t) => {
|
||||
console.log('layout instance t');
|
||||
t.layout(dimension);
|
||||
});
|
||||
}
|
||||
|
@ -242,9 +240,6 @@ export class TerminalPanel extends Panel {
|
|||
`line-height: ${newFont.lineHeight};` +
|
||||
'}';
|
||||
this.font = newFont;
|
||||
this.terminalService.terminalInstances.forEach((t) => {
|
||||
t.setFont(newFont);
|
||||
});
|
||||
}
|
||||
this.layout(new Dimension(this.parentDomElement.offsetWidth, this.parentDomElement.offsetHeight));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue