зеркало из
https://github.com/glebtv/tui-textarea.git
synced 2026-09-08 08:25:51 +03:00
fix disabling/enabling raw mode in editor example (fix #44)
Этот коммит содержится в:
@@ -1,7 +1,6 @@
|
|||||||
use crossterm::event::{DisableMouseCapture, EnableMouseCapture};
|
use crossterm::event::{DisableMouseCapture, EnableMouseCapture};
|
||||||
use crossterm::terminal::{
|
use crossterm::terminal::{
|
||||||
disable_raw_mode, enable_raw_mode, is_raw_mode_enabled, EnterAlternateScreen,
|
disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
|
||||||
LeaveAlternateScreen,
|
|
||||||
};
|
};
|
||||||
use ratatui::backend::CrosstermBackend;
|
use ratatui::backend::CrosstermBackend;
|
||||||
use ratatui::layout::{Constraint, Direction, Layout};
|
use ratatui::layout::{Constraint, Direction, Layout};
|
||||||
@@ -157,10 +156,8 @@ impl<'a> Editor<'a> {
|
|||||||
return error!("USAGE: cargo run --example editor FILE1 [FILE2...]");
|
return error!("USAGE: cargo run --example editor FILE1 [FILE2...]");
|
||||||
}
|
}
|
||||||
let mut stdout = io::stdout();
|
let mut stdout = io::stdout();
|
||||||
if !is_raw_mode_enabled()? {
|
enable_raw_mode()?;
|
||||||
enable_raw_mode()?;
|
crossterm::execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
||||||
crossterm::execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
|
||||||
}
|
|
||||||
let backend = CrosstermBackend::new(stdout);
|
let backend = CrosstermBackend::new(stdout);
|
||||||
let term = Terminal::new(backend)?;
|
let term = Terminal::new(backend)?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
@@ -352,9 +349,6 @@ impl<'a> Editor<'a> {
|
|||||||
impl<'a> Drop for Editor<'a> {
|
impl<'a> Drop for Editor<'a> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
self.term.show_cursor().unwrap();
|
self.term.show_cursor().unwrap();
|
||||||
if !is_raw_mode_enabled().unwrap() {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
disable_raw_mode().unwrap();
|
disable_raw_mode().unwrap();
|
||||||
crossterm::execute!(
|
crossterm::execute!(
|
||||||
self.term.backend_mut(),
|
self.term.backend_mut(),
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ use crossterm_025 as crossterm;
|
|||||||
|
|
||||||
use crossterm::event::{DisableMouseCapture, EnableMouseCapture};
|
use crossterm::event::{DisableMouseCapture, EnableMouseCapture};
|
||||||
use crossterm::terminal::{
|
use crossterm::terminal::{
|
||||||
disable_raw_mode, enable_raw_mode, is_raw_mode_enabled, EnterAlternateScreen,
|
disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
|
||||||
LeaveAlternateScreen,
|
|
||||||
};
|
};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::env;
|
use std::env;
|
||||||
@@ -159,10 +158,8 @@ impl<'a> Editor<'a> {
|
|||||||
return error!("USAGE: cargo run --example editor FILE1 [FILE2...]");
|
return error!("USAGE: cargo run --example editor FILE1 [FILE2...]");
|
||||||
}
|
}
|
||||||
let mut stdout = io::stdout();
|
let mut stdout = io::stdout();
|
||||||
if !is_raw_mode_enabled()? {
|
enable_raw_mode()?;
|
||||||
enable_raw_mode()?;
|
crossterm::execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
||||||
crossterm::execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
|
||||||
}
|
|
||||||
let backend = CrosstermBackend::new(stdout);
|
let backend = CrosstermBackend::new(stdout);
|
||||||
let term = Terminal::new(backend)?;
|
let term = Terminal::new(backend)?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
@@ -354,9 +351,6 @@ impl<'a> Editor<'a> {
|
|||||||
impl<'a> Drop for Editor<'a> {
|
impl<'a> Drop for Editor<'a> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
self.term.show_cursor().unwrap();
|
self.term.show_cursor().unwrap();
|
||||||
if !is_raw_mode_enabled().unwrap() {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
disable_raw_mode().unwrap();
|
disable_raw_mode().unwrap();
|
||||||
crossterm::execute!(
|
crossterm::execute!(
|
||||||
self.term.backend_mut(),
|
self.term.backend_mut(),
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user