Compare commits
2 Commits
7bc10f34f2
...
40167f0f23
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40167f0f23 | ||
|
|
1ce513b688 |
1367
Cargo.lock
generated
1367
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -4,5 +4,5 @@ version = "0.1.0"
|
|||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
crossterm = "0.26"
|
crossterm = "0.29"
|
||||||
ratatui = { version = "0.20", features = ["crossterm"] }
|
ratatui = { version = "0.30", features = ["crossterm"] }
|
||||||
|
|||||||
17
src/main.rs
17
src/main.rs
@@ -6,10 +6,10 @@ use crossterm::execute;
|
|||||||
use crossterm::terminal::{
|
use crossterm::terminal::{
|
||||||
EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
|
EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
|
||||||
};
|
};
|
||||||
|
use ratatui::Terminal;
|
||||||
use ratatui::backend::CrosstermBackend;
|
use ratatui::backend::CrosstermBackend;
|
||||||
use ratatui::layout::{Constraint, Direction, Layout};
|
use ratatui::layout::{Constraint, Direction, Layout};
|
||||||
use ratatui::style::{Color, Modifier, Style};
|
use ratatui::style::{Color, Modifier, Style};
|
||||||
use ratatui::terminal::Terminal;
|
|
||||||
use ratatui::widgets::{Block, Borders, List, ListItem, ListState};
|
use ratatui::widgets::{Block, Borders, List, ListItem, ListState};
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
@@ -37,7 +37,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
loop {
|
loop {
|
||||||
terminal.draw(|f| {
|
terminal.draw(|f| {
|
||||||
let size = f.size();
|
let size = f.area();
|
||||||
let chunks = Layout::default()
|
let chunks = Layout::default()
|
||||||
.direction(Direction::Vertical)
|
.direction(Direction::Vertical)
|
||||||
.constraints([Constraint::Min(0)].as_ref())
|
.constraints([Constraint::Min(0)].as_ref())
|
||||||
@@ -92,10 +92,15 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
if let Some(i) = state.selected()
|
if let Some(i) = state.selected()
|
||||||
&& i < marked.len()
|
&& i < marked.len()
|
||||||
{
|
{
|
||||||
marked[i] = true;
|
assert!(i < marked.len());
|
||||||
// move cursor down
|
if marked[i] {
|
||||||
let next = if i + 1 < lines.len() { i + 1 } else { i };
|
marked[i] = false;
|
||||||
state.select(Some(next));
|
} else {
|
||||||
|
marked[i] = true;
|
||||||
|
// move cursor down
|
||||||
|
let next = lines.len().min(i + 1);
|
||||||
|
state.select(Some(next));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|||||||
Reference in New Issue
Block a user