]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Fix terminal fitting height
authorparis <pariskasidiaris@gmail.com>
Tue, 19 Aug 2014 13:24:43 +0000 (13:24 +0000)
committerparis <pariskasidiaris@gmail.com>
Tue, 19 Aug 2014 13:24:43 +0000 (13:24 +0000)
addons/fit/fit.js
demo/index.html

index af1fd6c1cfc9b9a6715b37786e3c7faa715e6939..7bc73cd20c167918ff3f8ad80466a59b75772147 100644 (file)
 Terminal.prototype.fit = function () {
   var container = this.rowContainer,
       subjectRow = this.rowContainer.firstElementChild,
-      rows = parseInt(container.offsetHeight / subjectRow.offsetHeight),
+      rows,
       contentBuffer,
       characterWidth,
+      characterHeight,
       cols;
-  
+
   subjectRow.style.display = 'inline';
   
   contentBuffer = subjectRow.textContent;
 
-  subjectRow.textContent = ' ';
+  subjectRow.innerHTML = '&nbsp;'; /* Arbitrary character to calculate its dimensions */
   characterWidth = parseInt(subjectRow.offsetWidth);
+  characterHeight = parseInt(subjectRow.offsetHeight);
 
   subjectRow.style.display = '';
   
   cols = container.offsetWidth / characterWidth;
   cols = parseInt(cols);
+  
+  var parentElementStyle = window.getComputedStyle(this.element.parentElement),
+      parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height')),
+      elementStyle = window.getComputedStyle(this.element),
+      elementPadding = parseInt(elementStyle.getPropertyValue('padding-top')) + parseInt(elementStyle.getPropertyValue('padding-bottom')),
+      availableHeight = parentElementHeight - elementPadding;
+  
+    rows = parseInt(availableHeight / characterHeight);
       
   this.resize(cols, rows);
 };
\ No newline at end of file
index b09ffa8e1fa882b2e8b45dbe82898248b99589cf..d19894973543408f97d751c1223455b47af05a31 100644 (file)
@@ -3,7 +3,7 @@
     <head>
         <title>xterm.js demo</title>
         <link rel="stylesheet" href="../src/xterm.css" />
-        <link rel="stylesheet" href="../addon/fullscreen/fullscreen.css" />
+        <link rel="stylesheet" href="../addons/fullscreen/fullscreen.css" />
         <link rel="stylesheet" href="style.css" />
         <script src="../src/xterm.js" ></script>
         <script src="../addons/fit/fit.js" ></script>