diff --git a/demo/main.js b/demo/main.js index f05a8cef1..f4fb0a2a0 100644 --- a/demo/main.js +++ b/demo/main.js @@ -2,9 +2,7 @@ var term, protocol, socketURL, socket, - pid, - charWidth, - charHeight; + pid; var terminalContainer = document.getElementById('terminal-container'), actionElements = { @@ -21,11 +19,13 @@ var terminalContainer = document.getElementById('terminal-container'), colsElement = document.getElementById('cols'), rowsElement = document.getElementById('rows'); -function setTerminalSize () { - var cols = parseInt(colsElement.value, 10), - rows = parseInt(rowsElement.value, 10), - width = (cols * charWidth).toString() + 'px', - height = (rows * charHeight).toString() + 'px'; +function setTerminalSize() { + var cols = parseInt(colsElement.value, 10); + var rows = parseInt(rowsElement.value, 10); + var viewportElement = document.querySelector('.xterm-viewport'); + var scrollBarWidth = viewportElement.offsetWidth - viewportElement.clientWidth; + var width = (cols * term.charMeasure.width + 20 /*room for scrollbar*/).toString() + 'px'; + var height = (rows * term.charMeasure.height).toString() + 'px'; terminalContainer.style.width = width; terminalContainer.style.height = height; @@ -97,10 +97,10 @@ function createTerminal() { colsElement.value = term.cols; rowsElement.value = term.rows; - fetch('/terminals?cols=' + term.cols + '&rows=' + term.rows, {method: 'POST'}).then(function (res) { + // Set terminal size again to set the specific dimensions on the demo + setTerminalSize(); - charWidth = Math.ceil(term.element.offsetWidth / term.cols); - charHeight = Math.ceil(term.element.offsetHeight / term.rows); + fetch('/terminals?cols=' + term.cols + '&rows=' + term.rows, {method: 'POST'}).then(function (res) { res.text().then(function (pid) { window.pid = pid;