fix(editor): handle editor in fullscreen (#1544)
This commit is contained in:
parent
ccbcc5ca83
commit
443cf26d80
5 changed files with 22 additions and 18 deletions
|
|
@ -103,7 +103,7 @@ impl Pane for PluginPane {
|
||||||
self.geom = position_and_size;
|
self.geom = position_and_size;
|
||||||
self.should_render = true;
|
self.should_render = true;
|
||||||
}
|
}
|
||||||
fn get_geom_override(&mut self, pane_geom: PaneGeom) {
|
fn set_geom_override(&mut self, pane_geom: PaneGeom) {
|
||||||
self.geom_override = Some(pane_geom);
|
self.geom_override = Some(pane_geom);
|
||||||
self.should_render = true;
|
self.should_render = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ impl Pane for TerminalPane {
|
||||||
self.geom = position_and_size;
|
self.geom = position_and_size;
|
||||||
self.reflow_lines();
|
self.reflow_lines();
|
||||||
}
|
}
|
||||||
fn get_geom_override(&mut self, pane_geom: PaneGeom) {
|
fn set_geom_override(&mut self, pane_geom: PaneGeom) {
|
||||||
self.geom_override = Some(pane_geom);
|
self.geom_override = Some(pane_geom);
|
||||||
self.reflow_lines();
|
self.reflow_lines();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -142,8 +142,13 @@ impl TiledPanes {
|
||||||
}
|
}
|
||||||
let removed_pane = self.panes.remove(&pane_id).map(|removed_pane| {
|
let removed_pane = self.panes.remove(&pane_id).map(|removed_pane| {
|
||||||
let with_pane_id = with_pane.pid();
|
let with_pane_id = with_pane.pid();
|
||||||
let removed_pane_geom = removed_pane.current_geom();
|
let removed_pane_geom = removed_pane.position_and_size();
|
||||||
|
let removed_pane_geom_override = removed_pane.geom_override();
|
||||||
with_pane.set_geom(removed_pane_geom);
|
with_pane.set_geom(removed_pane_geom);
|
||||||
|
match removed_pane_geom_override {
|
||||||
|
Some(geom_override) => with_pane.set_geom_override(geom_override),
|
||||||
|
None => with_pane.reset_size_and_position_override(),
|
||||||
|
};
|
||||||
self.panes.insert(with_pane_id, with_pane);
|
self.panes.insert(with_pane_id, with_pane);
|
||||||
removed_pane
|
removed_pane
|
||||||
});
|
});
|
||||||
|
|
@ -780,7 +785,7 @@ impl TiledPanes {
|
||||||
let next_geom_override = new_position.geom_override();
|
let next_geom_override = new_position.geom_override();
|
||||||
new_position.set_geom(prev_geom);
|
new_position.set_geom(prev_geom);
|
||||||
if let Some(geom) = prev_geom_override {
|
if let Some(geom) = prev_geom_override {
|
||||||
new_position.get_geom_override(geom);
|
new_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(new_position, self.os_api);
|
resize_pty!(new_position, self.os_api);
|
||||||
new_position.set_should_render(true);
|
new_position.set_should_render(true);
|
||||||
|
|
@ -788,7 +793,7 @@ impl TiledPanes {
|
||||||
let current_position = self.panes.get_mut(&active_pane_id).unwrap();
|
let current_position = self.panes.get_mut(&active_pane_id).unwrap();
|
||||||
current_position.set_geom(next_geom);
|
current_position.set_geom(next_geom);
|
||||||
if let Some(geom) = next_geom_override {
|
if let Some(geom) = next_geom_override {
|
||||||
current_position.get_geom_override(geom);
|
current_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(current_position, self.os_api);
|
resize_pty!(current_position, self.os_api);
|
||||||
current_position.set_should_render(true);
|
current_position.set_should_render(true);
|
||||||
|
|
@ -813,7 +818,7 @@ impl TiledPanes {
|
||||||
let next_geom_override = new_position.geom_override();
|
let next_geom_override = new_position.geom_override();
|
||||||
new_position.set_geom(prev_geom);
|
new_position.set_geom(prev_geom);
|
||||||
if let Some(geom) = prev_geom_override {
|
if let Some(geom) = prev_geom_override {
|
||||||
new_position.get_geom_override(geom);
|
new_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(new_position, self.os_api);
|
resize_pty!(new_position, self.os_api);
|
||||||
new_position.set_should_render(true);
|
new_position.set_should_render(true);
|
||||||
|
|
@ -821,7 +826,7 @@ impl TiledPanes {
|
||||||
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
||||||
current_position.set_geom(next_geom);
|
current_position.set_geom(next_geom);
|
||||||
if let Some(geom) = next_geom_override {
|
if let Some(geom) = next_geom_override {
|
||||||
current_position.get_geom_override(geom);
|
current_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(current_position, self.os_api);
|
resize_pty!(current_position, self.os_api);
|
||||||
current_position.set_should_render(true);
|
current_position.set_should_render(true);
|
||||||
|
|
@ -848,7 +853,7 @@ impl TiledPanes {
|
||||||
let next_geom_override = new_position.geom_override();
|
let next_geom_override = new_position.geom_override();
|
||||||
new_position.set_geom(prev_geom);
|
new_position.set_geom(prev_geom);
|
||||||
if let Some(geom) = prev_geom_override {
|
if let Some(geom) = prev_geom_override {
|
||||||
new_position.get_geom_override(geom);
|
new_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(new_position, self.os_api);
|
resize_pty!(new_position, self.os_api);
|
||||||
new_position.set_should_render(true);
|
new_position.set_should_render(true);
|
||||||
|
|
@ -856,7 +861,7 @@ impl TiledPanes {
|
||||||
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
||||||
current_position.set_geom(next_geom);
|
current_position.set_geom(next_geom);
|
||||||
if let Some(geom) = next_geom_override {
|
if let Some(geom) = next_geom_override {
|
||||||
current_position.get_geom_override(geom);
|
current_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(current_position, self.os_api);
|
resize_pty!(current_position, self.os_api);
|
||||||
current_position.set_should_render(true);
|
current_position.set_should_render(true);
|
||||||
|
|
@ -883,7 +888,7 @@ impl TiledPanes {
|
||||||
let next_geom_override = new_position.geom_override();
|
let next_geom_override = new_position.geom_override();
|
||||||
new_position.set_geom(prev_geom);
|
new_position.set_geom(prev_geom);
|
||||||
if let Some(geom) = prev_geom_override {
|
if let Some(geom) = prev_geom_override {
|
||||||
new_position.get_geom_override(geom);
|
new_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(new_position, self.os_api);
|
resize_pty!(new_position, self.os_api);
|
||||||
new_position.set_should_render(true);
|
new_position.set_should_render(true);
|
||||||
|
|
@ -891,7 +896,7 @@ impl TiledPanes {
|
||||||
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
||||||
current_position.set_geom(next_geom);
|
current_position.set_geom(next_geom);
|
||||||
if let Some(geom) = next_geom_override {
|
if let Some(geom) = next_geom_override {
|
||||||
current_position.get_geom_override(geom);
|
current_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(current_position, self.os_api);
|
resize_pty!(current_position, self.os_api);
|
||||||
current_position.set_should_render(true);
|
current_position.set_should_render(true);
|
||||||
|
|
@ -918,7 +923,7 @@ impl TiledPanes {
|
||||||
let next_geom_override = new_position.geom_override();
|
let next_geom_override = new_position.geom_override();
|
||||||
new_position.set_geom(prev_geom);
|
new_position.set_geom(prev_geom);
|
||||||
if let Some(geom) = prev_geom_override {
|
if let Some(geom) = prev_geom_override {
|
||||||
new_position.get_geom_override(geom);
|
new_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(new_position, self.os_api);
|
resize_pty!(new_position, self.os_api);
|
||||||
new_position.set_should_render(true);
|
new_position.set_should_render(true);
|
||||||
|
|
@ -926,7 +931,7 @@ impl TiledPanes {
|
||||||
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
let current_position = self.panes.get_mut(active_pane_id).unwrap();
|
||||||
current_position.set_geom(next_geom);
|
current_position.set_geom(next_geom);
|
||||||
if let Some(geom) = next_geom_override {
|
if let Some(geom) = next_geom_override {
|
||||||
current_position.get_geom_override(geom);
|
current_position.set_geom_override(geom);
|
||||||
}
|
}
|
||||||
resize_pty!(current_position, self.os_api);
|
resize_pty!(current_position, self.os_api);
|
||||||
current_position.set_should_render(true);
|
current_position.set_should_render(true);
|
||||||
|
|
@ -1059,7 +1064,7 @@ impl TiledPanes {
|
||||||
.collect();
|
.collect();
|
||||||
for pid in viewport_pane_ids {
|
for pid in viewport_pane_ids {
|
||||||
let viewport_pane = self.get_pane_mut(pid).unwrap();
|
let viewport_pane = self.get_pane_mut(pid).unwrap();
|
||||||
viewport_pane.get_geom_override(viewport_pane.position_and_size());
|
viewport_pane.set_geom_override(viewport_pane.position_and_size());
|
||||||
}
|
}
|
||||||
let viewport = { *self.viewport.borrow() };
|
let viewport = { *self.viewport.borrow() };
|
||||||
let active_terminal = self.get_pane_mut(active_pane_id).unwrap();
|
let active_terminal = self.get_pane_mut(active_pane_id).unwrap();
|
||||||
|
|
@ -1068,7 +1073,7 @@ impl TiledPanes {
|
||||||
y: viewport.y,
|
y: viewport.y,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
active_terminal.get_geom_override(full_screen_geom);
|
active_terminal.set_geom_override(full_screen_geom);
|
||||||
}
|
}
|
||||||
let connected_client_list: Vec<ClientId> =
|
let connected_client_list: Vec<ClientId> =
|
||||||
{ self.connected_clients.borrow().iter().copied().collect() };
|
{ self.connected_clients.borrow().iter().copied().collect() };
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ impl<'a> PaneResizer<'a> {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
if pane.geom_override().is_some() {
|
if pane.geom_override().is_some() {
|
||||||
pane.get_geom_override(new_geom);
|
pane.set_geom_override(new_geom);
|
||||||
} else {
|
} else {
|
||||||
pane.set_geom(new_geom);
|
pane.set_geom(new_geom);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ pub trait Pane {
|
||||||
fn get_content_rows(&self) -> usize;
|
fn get_content_rows(&self) -> usize;
|
||||||
fn reset_size_and_position_override(&mut self);
|
fn reset_size_and_position_override(&mut self);
|
||||||
fn set_geom(&mut self, position_and_size: PaneGeom);
|
fn set_geom(&mut self, position_and_size: PaneGeom);
|
||||||
fn get_geom_override(&mut self, pane_geom: PaneGeom);
|
fn set_geom_override(&mut self, pane_geom: PaneGeom);
|
||||||
fn handle_pty_bytes(&mut self, bytes: VteBytes);
|
fn handle_pty_bytes(&mut self, bytes: VteBytes);
|
||||||
fn cursor_coordinates(&self) -> Option<(usize, usize)>;
|
fn cursor_coordinates(&self) -> Option<(usize, usize)>;
|
||||||
fn adjust_input_to_terminal(&self, input_bytes: Vec<u8>) -> Vec<u8>;
|
fn adjust_input_to_terminal(&self, input_bytes: Vec<u8>) -> Vec<u8>;
|
||||||
|
|
@ -1517,7 +1517,6 @@ impl Tab {
|
||||||
let mut file = temp_dir();
|
let mut file = temp_dir();
|
||||||
file.push(format!("{}.dump", Uuid::new_v4()));
|
file.push(format!("{}.dump", Uuid::new_v4()));
|
||||||
self.dump_active_terminal_screen(Some(String::from(file.to_string_lossy())), client_id);
|
self.dump_active_terminal_screen(Some(String::from(file.to_string_lossy())), client_id);
|
||||||
// let line_number = self.get_active_pane(client_id).map(|a_t| a_t.get_line_number());
|
|
||||||
let line_number = self
|
let line_number = self
|
||||||
.get_active_pane(client_id)
|
.get_active_pane(client_id)
|
||||||
.and_then(|a_t| a_t.get_line_number());
|
.and_then(|a_t| a_t.get_line_number());
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue