From 756e91b4220bf9d6109ed2583632b76673a6948c Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 19 Mar 2010 21:47:49 +0000
Subject: [PATCH] Use HTML and a DIV rather than plaintext

---
 src/ZuulTerm/chrome/content/Term.js      | 34 ++++++++++++++++++++----
 src/ZuulTerm/chrome/content/default.html |  3 ++-
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/src/ZuulTerm/chrome/content/Term.js b/src/ZuulTerm/chrome/content/Term.js
index 9523f284d8..6a4f8895ef 100644
--- a/src/ZuulTerm/chrome/content/Term.js
+++ b/src/ZuulTerm/chrome/content/Term.js
@@ -1,12 +1,35 @@
 var connection=null;
 
-function writeText(data)
+function writeHTML(data)
 {
-	var term=document.getElementById("frame").contentDocument.getElementById("terminal");
-	var win=document.getElementById("frame").contentWindow;
+	var frame=document.getElementById("frame");
+	var doc=frame.contentDocument;
+	var win=frame.contentWindow;
+	var term=doc.getElementById("terminal");
+	var top;
 
 	term.innerHTML += data;
-	win.scroll(0, term.clientHeight);
+	if(term.scroll != undefined && term.clientHeight != undefined) {
+		term.scroll(0, term.clientHeight);
+	}
+	else if(term.scrollHeight != undefined && term.scrollTop != undefined) {
+		top=term.scrollHeight-term.clientHeight;
+		if(top < 0)
+			top=0;
+		if(term.scrollTop != top)
+			term.scrollTop=top;
+	}
+}
+
+function writeText(data)
+{
+	data=data.replace(/&/g,'&amp;');
+	data=data.replace(/</g,'&lt;');
+	data=data.replace(/>/g,'&gt;');
+	data=data.replace(/'/g,'&apos;');
+	data=data.replace(/"/g,'&quot;');
+	data=data.replace(/ /g,'&nbsp;');
+	writeHTML(data);
 }
 
 function handleCtrl(byte)
@@ -17,9 +40,10 @@ function handleCtrl(byte)
 
 	switch(byte) {
 		case '\n':
+			writeHTML('<br>');
+			break;
 		case '\t':
 		case '\r':
-			writeText(byte);
 			break;
 		case '\b':
 			term.innerHTML = term.innerHTML.replace(/[^\x00-\x1F]$/,'');
diff --git a/src/ZuulTerm/chrome/content/default.html b/src/ZuulTerm/chrome/content/default.html
index 6462923c2d..a2c0dd8728 100644
--- a/src/ZuulTerm/chrome/content/default.html
+++ b/src/ZuulTerm/chrome/content/default.html
@@ -1,2 +1,3 @@
 <html>
-  <body><plaintext id="terminal">
+  <body><div id="terminal" width="640px" height="400px"></textarea></body>
+</html>
\ No newline at end of file
-- 
GitLab