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-web/src/lib.rs | 3 +++ teleterm-web/src/model.rs | 6 ++++++ teleterm-web/src/protocol.rs | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'teleterm-web') diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index b2ad524..5d59f24 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -67,6 +67,9 @@ fn update( model.disconnect_watch(); orders.perform_cmd(model.list()); } + crate::protocol::Message::Resize { size } => { + model.set_size(size.rows, size.cols); + } } } ws::WebSocketEvent::Error(e) => { diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index 72ac8c3..ba707eb 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -67,6 +67,12 @@ impl Model { } } + pub fn set_size(&mut self, rows: u16, cols: u16) { + if let Some(conn) = &mut self.watch_conn { + conn.term.set_size(rows, cols); + } + } + pub fn screen(&self) -> Option<&vt100::Screen> { self.watch_conn.as_ref().map(|conn| conn.term.screen()) } diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs index 60047e0..9c0c144 100644 --- a/teleterm-web/src/protocol.rs +++ b/teleterm-web/src/protocol.rs @@ -1,10 +1,11 @@ // it's possible we should just consider pulling the real protocol out into a // crate or something? but ideally in a way that doesn't require pulling in // tokio -#[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize)] +#[derive(Clone, Debug, serde::Deserialize)] pub enum Message { TerminalOutput { data: Vec }, Disconnected, + Resize { size: Size }, } #[derive(Clone, Debug, serde::Deserialize)] -- cgit v1.2.3-54-g00ecf