From 4e8c524dcbbf2272db8718ff470b590cdb51b4d2 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 5 Feb 2014 07:37:17 -0500 Subject: [PATCH] fix(terminal) resizing --- lib/client/terminal.js | 7 +++++-- lib/server/terminal.js | 27 +++++++++++++++------------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/client/terminal.js b/lib/client/terminal.js index ff833be5..6adaa859 100644 --- a/lib/client/terminal.js +++ b/lib/client/terminal.js @@ -119,7 +119,10 @@ var CloudCmd, Util, DOM, CloudFunc, Terminal; }, }; - options[CHANNEL] = write; + options[CHANNEL] = write; + options[CHANNEL_RESIZE] = function(size) { + Term.resize(size.cols, size.rows); + }; socket.on(options); @@ -163,7 +166,7 @@ var CloudCmd, Util, DOM, CloudFunc, Terminal; if (Size.cols !== cols || Size.rows !== rows) { Size = size; - Term.resize(size.cols, size.rows); + //Term.resize(size.cols, size.rows); Term.emit('resize', size); } } diff --git a/lib/server/terminal.js b/lib/server/terminal.js index db677c57..5d5417c9 100644 --- a/lib/server/terminal.js +++ b/lib/server/terminal.js @@ -30,8 +30,8 @@ if (pty) ret = socket.on('connection', function(clientSocket) { - onConnection(clientSocket, function(data) { - socket.emit(CHANNEL, data, clientSocket); + onConnection(clientSocket, function(channel, data) { + socket.emit(channel, data, clientSocket); }); }); @@ -48,7 +48,7 @@ term = getTerm(callback); dataFunc = onData.bind(null, term); - resizeFunc = onResize.bind(null, term); + resizeFunc = onResize.bind(null, term, callback); onDisconnect = function(conNum, term) { Clients[conNum] = null; @@ -71,8 +71,9 @@ } } - function onResize(term, size) { + function onResize(term, callback, size) { term.resize(size.cols, size.rows); + Util.exec(callback, CHANNEL_RESIZE, size); } function onData(term, data) { @@ -80,15 +81,17 @@ } function getTerm(callback) { - var term = pty.spawn('bash', [], { - name: 'xterm-color', - cols: 80, - rows: 25, - cwd : DIR, - env : process.env - }); + var onData = Util.exec.bind(Util, callback, CHANNEL), + + term = pty.spawn('bash', [], { + name: 'xterm-color', + cols: 80, + rows: 25, + cwd : DIR, + env : process.env + }); - term.on('data', Util.exec.bind(Util, callback)); + term.on('data', onData); return term; }