From 0972d10f32d92895dae0e917dc7b5e2b71531cea Mon Sep 17 00:00:00 2001 From: cwj3rcb Date: Fri, 13 Feb 2026 21:14:40 -0600 Subject: [PATCH] selection ui change --- src/main.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index a42c424..38f6d7f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,6 +12,7 @@ use ratatui::{ layout::{Constraint, Layout, Rect, Spacing}, symbols::merge::MergeStrategy, widgets::{Block, List, ListItem, ListState, Paragraph}, + style::{Modifier, Style}, Frame, Terminal, }; use ratatui::backend::CrosstermBackend; @@ -84,7 +85,7 @@ fn run_app(terminal: &mut Terminal>) -> io::Result< // tick-based updates go here later (smooth nav, download polling, etc.) last_tick = Instant::now(); } - }; + } Ok(()) } @@ -93,19 +94,24 @@ fn handle_key(app: &mut App, code: KeyCode) { KeyCode::Char('q') => app.should_exit = true, KeyCode::Up | KeyCode::Char('k') => { - if app.selected > 0 { + if app.items.is_empty() { + return; + } + if app.selected == 0 { + app.selected = app.items.len() - 1; + } else { app.selected -= 1; } app.status = format!("Selected: {}", app.items[app.selected]); } KeyCode::Down | KeyCode::Char('j') => { - if app.selected + 1 < app.items.len() { - app.selected += 1; + if app.items.is_empty() { + return; } + app.selected = (app.selected + 1) % app.items.len(); app.status = format!("Selected: {}", app.items[app.selected]); } - _ => {} } } @@ -126,7 +132,8 @@ fn ui(frame: &mut Frame, app: &App) { let list = List::new(items) .block(Block::bordered().title("List").merge_borders(MergeStrategy::Exact)) - .highlight_symbol("> "); + .highlight_symbol("> ") + .highlight_style(Style::default().add_modifier(Modifier::REVERSED)); let mut state = ListState::default(); state.select(Some(app.selected));