diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-11-17 22:32:46 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-11-17 22:32:46 -0500 |
commit | 2597e1954659608c94965015651e3eac1f12a206 (patch) | |
tree | 8e8e48403f98f94fe06793e2837a8b9e01c62bc7 /src | |
parent | 70f48c3ef7dde34546b6d646818333505d0e4777 (diff) | |
download | nbsh-2597e1954659608c94965015651e3eac1f12a206.tar.gz nbsh-2597e1954659608c94965015651e3eac1f12a206.zip |
don't draw the readline over a fullscreen command
Diffstat (limited to 'src')
-rw-r--r-- | src/history.rs | 12 | ||||
-rw-r--r-- | src/state.rs | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/history.rs b/src/history.rs index c55f62c..4421e20 100644 --- a/src/history.rs +++ b/src/history.rs @@ -136,8 +136,8 @@ impl History { ) -> anyhow::Result<()> { if let Some(idx) = focus { let mut entry = self.entries[idx].lock_arc().await; - if entry.should_full_screen() { - entry.render_full_screen(out); + if entry.should_fullscreen() { + entry.render_fullscreen(out); return Ok(()); } } @@ -184,6 +184,10 @@ impl History { self.entries[idx].lock_arc().await.toggle_fullscreen(); } + pub async fn is_fullscreen(&self, idx: usize) -> bool { + self.entries[idx].lock_arc().await.should_fullscreen() + } + pub fn entry_count(&self) -> usize { self.entries.len() } @@ -340,12 +344,12 @@ impl HistoryEntry { out.reset_attributes(); } - fn should_full_screen(&self) -> bool { + fn should_fullscreen(&self) -> bool { self.fullscreen .unwrap_or_else(|| self.vt.screen().alternate_screen()) } - fn render_full_screen(&mut self, out: &mut textmode::Output) { + fn render_fullscreen(&mut self, out: &mut textmode::Output) { let screen = self.vt.screen(); let new_audible_bell_state = screen.audible_bell_count(); let new_visual_bell_state = screen.visual_bell_count(); diff --git a/src/state.rs b/src/state.rs index 8271cec..6f17e95 100644 --- a/src/state.rs +++ b/src/state.rs @@ -36,7 +36,8 @@ impl State { self.readline.render(out, true).await?; } Focus::History(idx) => { - if self.hide_readline { + if self.hide_readline || self.history.is_fullscreen(idx).await + { self.history.render(out, 0, Some(idx)).await?; } else { self.history |