From cc0ac6c8337e3dfea740feb0385d4a14e737d77c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 22 Nov 2019 15:16:14 -0500 Subject: resize the browser terminal if the streamer terminal is resized --- teleterm/src/server.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'teleterm/src/server.rs') diff --git a/teleterm/src/server.rs b/teleterm/src/server.rs index 1f8f442..1f565a2 100644 --- a/teleterm/src/server.rs +++ b/teleterm/src/server.rs @@ -489,16 +489,17 @@ impl let username = conn.state.username().unwrap(); if let Some(stream_conn) = self.connections.get(&id) { - let data = stream_conn - .state - .term() - .map(|parser| parser.screen().contents_formatted()) - .ok_or_else(|| Error::InvalidWatchId { - id: id.to_string(), - })?; + let term = stream_conn.state.term().ok_or_else(|| { + Error::InvalidWatchId { id: id.to_string() } + })?; + let (rows, cols) = term.screen().size(); + let data = term.screen().contents_formatted(); log::info!("{}: watch({}, {})", conn.id, username, id); conn.state.watch(&id); + conn.send_message(crate::protocol::Message::resize( + crate::term::Size { rows, cols }, + )); conn.send_message(crate::protocol::Message::terminal_output( &data, )); @@ -585,6 +586,14 @@ impl parser.set_size(size.rows, size.cols); } + for watch_conn in self.watchers_mut() { + let watch_id = watch_conn.state.watch_id().unwrap(); + if conn.id == watch_id { + watch_conn + .send_message(crate::protocol::Message::resize(size)); + } + } + Ok(()) } -- cgit v1.2.3-54-g00ecf