fix(editor): handle editor in fullscreen (#1544)

This commit is contained in:
Aram Drevekenin 2022-06-27 15:58:19 +02:00 committed by GitHub
parent ccbcc5ca83
commit 443cf26d80
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 22 additions and 18 deletions

View file

@ -103,7 +103,7 @@ impl Pane for PluginPane {
self.geom = position_and_size;
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.should_render = true;
}

View file

@ -95,7 +95,7 @@ impl Pane for TerminalPane {
self.geom = position_and_size;
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.reflow_lines();
}

View file

@ -142,8 +142,13 @@ impl TiledPanes {
}
let removed_pane = self.panes.remove(&pane_id).map(|removed_pane| {
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);
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);
removed_pane
});
@ -780,7 +785,7 @@ impl TiledPanes {
let next_geom_override = new_position.geom_override();
new_position.set_geom(prev_geom);
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);
new_position.set_should_render(true);
@ -788,7 +793,7 @@ impl TiledPanes {
let current_position = self.panes.get_mut(&active_pane_id).unwrap();
current_position.set_geom(next_geom);
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);
current_position.set_should_render(true);
@ -813,7 +818,7 @@ impl TiledPanes {
let next_geom_override = new_position.geom_override();
new_position.set_geom(prev_geom);
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);
new_position.set_should_render(true);
@ -821,7 +826,7 @@ impl TiledPanes {
let current_position = self.panes.get_mut(active_pane_id).unwrap();
current_position.set_geom(next_geom);
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);
current_position.set_should_render(true);
@ -848,7 +853,7 @@ impl TiledPanes {
let next_geom_override = new_position.geom_override();
new_position.set_geom(prev_geom);
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);
new_position.set_should_render(true);
@ -856,7 +861,7 @@ impl TiledPanes {
let current_position = self.panes.get_mut(active_pane_id).unwrap();
current_position.set_geom(next_geom);
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);
current_position.set_should_render(true);
@ -883,7 +888,7 @@ impl TiledPanes {
let next_geom_override = new_position.geom_override();
new_position.set_geom(prev_geom);
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);
new_position.set_should_render(true);
@ -891,7 +896,7 @@ impl TiledPanes {
let current_position = self.panes.get_mut(active_pane_id).unwrap();
current_position.set_geom(next_geom);
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);
current_position.set_should_render(true);
@ -918,7 +923,7 @@ impl TiledPanes {
let next_geom_override = new_position.geom_override();
new_position.set_geom(prev_geom);
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);
new_position.set_should_render(true);
@ -926,7 +931,7 @@ impl TiledPanes {
let current_position = self.panes.get_mut(active_pane_id).unwrap();
current_position.set_geom(next_geom);
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);
current_position.set_should_render(true);
@ -1059,7 +1064,7 @@ impl TiledPanes {
.collect();
for pid in viewport_pane_ids {
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 active_terminal = self.get_pane_mut(active_pane_id).unwrap();
@ -1068,7 +1073,7 @@ impl TiledPanes {
y: viewport.y,
..Default::default()
};
active_terminal.get_geom_override(full_screen_geom);
active_terminal.set_geom_override(full_screen_geom);
}
let connected_client_list: Vec<ClientId> =
{ self.connected_clients.borrow().iter().copied().collect() };

View file

@ -139,7 +139,7 @@ impl<'a> PaneResizer<'a> {
},
};
if pane.geom_override().is_some() {
pane.get_geom_override(new_geom);
pane.set_geom_override(new_geom);
} else {
pane.set_geom(new_geom);
}

View file

@ -121,7 +121,7 @@ pub trait Pane {
fn get_content_rows(&self) -> usize;
fn reset_size_and_position_override(&mut self);
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 cursor_coordinates(&self) -> Option<(usize, usize)>;
fn adjust_input_to_terminal(&self, input_bytes: Vec<u8>) -> Vec<u8>;
@ -1517,7 +1517,6 @@ impl Tab {
let mut file = temp_dir();
file.push(format!("{}.dump", Uuid::new_v4()));
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
.get_active_pane(client_id)
.and_then(|a_t| a_t.get_line_number());