Don't hold onto font in TerminalInstance

This commit is contained in:
Daniel Imms 2016-09-10 20:53:32 -07:00
parent e95af24f5a
commit 434e1e996f
3 changed files with 6 additions and 19 deletions

View file

@ -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;
}

View file

@ -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';

View file

@ -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));
}