Refactor trust_directory to use ColumnRenderable & friends, thus correcting wrapping behavior at small widths. Also introduce RowRenderable with fixed-width rows. - fixed wrapping in trust_directory - changed selector cursor to match other list item selections - allow y/n to work as well as 1/2 - fixed key_hint to be standard before: <img width="661" height="550" alt="Screenshot 2025-10-09 at 9 50 36 AM" src="https://github.com/user-attachments/assets/e01627aa-bee4-4e25-8eca-5575c43f05bf" /> after: <img width="661" height="550" alt="Screenshot 2025-10-09 at 9 51 31 AM" src="https://github.com/user-attachments/assets/cb816cbd-7609-4c83-b62f-b4dba392d79a" />
51 lines
1.1 KiB
Rust
51 lines
1.1 KiB
Rust
use ratatui::layout::Rect;
|
|
|
|
pub mod highlight;
|
|
pub mod line_utils;
|
|
pub mod renderable;
|
|
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
|
pub struct Insets {
|
|
left: u16,
|
|
top: u16,
|
|
right: u16,
|
|
bottom: u16,
|
|
}
|
|
|
|
impl Insets {
|
|
pub fn tlbr(top: u16, left: u16, bottom: u16, right: u16) -> Self {
|
|
Self {
|
|
top,
|
|
left,
|
|
bottom,
|
|
right,
|
|
}
|
|
}
|
|
|
|
pub fn vh(v: u16, h: u16) -> Self {
|
|
Self {
|
|
top: v,
|
|
left: h,
|
|
bottom: v,
|
|
right: h,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub trait RectExt {
|
|
fn inset(&self, insets: Insets) -> Rect;
|
|
}
|
|
|
|
impl RectExt for Rect {
|
|
fn inset(&self, insets: Insets) -> Rect {
|
|
let horizontal = insets.left.saturating_add(insets.right);
|
|
let vertical = insets.top.saturating_add(insets.bottom);
|
|
Rect {
|
|
x: self.x.saturating_add(insets.left),
|
|
y: self.y.saturating_add(insets.top),
|
|
width: self.width.saturating_sub(horizontal),
|
|
height: self.height.saturating_sub(vertical),
|
|
}
|
|
}
|
|
}
|