forked from extern/nushell
Fix bug in textview with rawkey
This commit is contained in:
parent
ef1a8aea80
commit
bc6dc030c2
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1912,7 +1912,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nu"
|
name = "nu"
|
||||||
version = "0.1.3"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"adhoc_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"adhoc_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"ansi_term 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ansi_term 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -151,13 +151,12 @@ fn scroll_view_lines_if_needed(draw_commands: Vec<DrawCommand>, use_color_buffer
|
|||||||
|
|
||||||
// Only scroll if needed
|
// Only scroll if needed
|
||||||
if max_bottom_line > height as usize {
|
if max_bottom_line > height as usize {
|
||||||
loop {
|
#[cfg(feature = "rawkey")]
|
||||||
#[cfg(feature = "rawkey")]
|
{
|
||||||
{
|
let rawkey = rawkey::RawKey::new();
|
||||||
|
loop {
|
||||||
use std::{thread, time::Duration};
|
use std::{thread, time::Duration};
|
||||||
|
|
||||||
let rawkey = rawkey::RawKey::new();
|
|
||||||
|
|
||||||
if rawkey.is_pressed(rawkey::KeyCode::Escape) {
|
if rawkey.is_pressed(rawkey::KeyCode::Escape) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -194,12 +193,24 @@ fn scroll_view_lines_if_needed(draw_commands: Vec<DrawCommand>, use_color_buffer
|
|||||||
paint_textview(&draw_commands, starting_row, use_color_buffer);
|
paint_textview(&draw_commands, starting_row, use_color_buffer);
|
||||||
}
|
}
|
||||||
thread::sleep(Duration::from_millis(50));
|
thread::sleep(Duration::from_millis(50));
|
||||||
|
let new_size = terminal.terminal_size();
|
||||||
|
if size != new_size {
|
||||||
|
size = new_size;
|
||||||
|
let _ = terminal.clear(crossterm::ClearType::All);
|
||||||
|
max_bottom_line =
|
||||||
|
paint_textview(&draw_commands, starting_row, use_color_buffer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
let _ = cursor.show();
|
||||||
|
|
||||||
#[cfg(not(feature = "rawkey"))]
|
#[allow(unused)]
|
||||||
{
|
let screen = RawScreen::disable_raw_mode();
|
||||||
use crossterm::{InputEvent, KeyEvent};
|
}
|
||||||
|
#[cfg(not(feature = "rawkey"))]
|
||||||
|
{
|
||||||
|
use crossterm::{InputEvent, KeyEvent};
|
||||||
|
|
||||||
|
loop {
|
||||||
if let Some(ref mut sync_stdin) = sync_stdin {
|
if let Some(ref mut sync_stdin) = sync_stdin {
|
||||||
if let Some(ev) = sync_stdin.next() {
|
if let Some(ev) = sync_stdin.next() {
|
||||||
match ev {
|
match ev {
|
||||||
@ -255,25 +266,23 @@ fn scroll_view_lines_if_needed(draw_commands: Vec<DrawCommand>, use_color_buffer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let new_size = terminal.terminal_size();
|
let new_size = terminal.terminal_size();
|
||||||
if size != new_size {
|
if size != new_size {
|
||||||
size = new_size;
|
size = new_size;
|
||||||
let _ = terminal.clear(crossterm::ClearType::All);
|
let _ = terminal.clear(crossterm::ClearType::All);
|
||||||
max_bottom_line =
|
max_bottom_line =
|
||||||
paint_textview(&draw_commands, starting_row, use_color_buffer);
|
paint_textview(&draw_commands, starting_row, use_color_buffer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
let _ = cursor.show();
|
||||||
|
|
||||||
|
#[allow(unused)]
|
||||||
|
let screen = RawScreen::disable_raw_mode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let cursor = cursor();
|
|
||||||
let _ = cursor.show();
|
|
||||||
|
|
||||||
#[allow(unused)]
|
|
||||||
let screen = RawScreen::disable_raw_mode();
|
|
||||||
|
|
||||||
println!("");
|
println!("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user