pub struct ClickRegionRegistry<T: Clone> { /* private fields */ }Expand description
Registry for managing click regions during render.
Use this to track clickable areas that are populated during rendering and checked during event handling.
§Example
use ratatui_interact::traits::ClickRegionRegistry;
use ratatui::layout::Rect;
#[derive(Clone, PartialEq, Debug)]
enum ButtonId { Save, Cancel }
let mut registry: ClickRegionRegistry<ButtonId> = ClickRegionRegistry::new();
// Clear before each render
registry.clear();
// Register regions during render
registry.register(Rect::new(0, 0, 8, 1), ButtonId::Save);
registry.register(Rect::new(10, 0, 8, 1), ButtonId::Cancel);
// Check clicks during event handling
assert_eq!(registry.handle_click(4, 0), Some(&ButtonId::Save));
assert_eq!(registry.handle_click(14, 0), Some(&ButtonId::Cancel));
assert_eq!(registry.handle_click(9, 0), None); // Gap between buttonsImplementations§
Source§impl<T: Clone> ClickRegionRegistry<T>
impl<T: Clone> ClickRegionRegistry<T>
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Create a new registry with pre-allocated capacity.
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clear all registered regions.
Call this at the start of each render to reset the regions.
Sourcepub fn register(&mut self, area: Rect, data: T)
pub fn register(&mut self, area: Rect, data: T)
Register a new click region.
§Arguments
area- The rectangular area that responds to clicksdata- Data to return when this region is clicked
Sourcepub fn handle_click(&self, col: u16, row: u16) -> Option<&T>
pub fn handle_click(&self, col: u16, row: u16) -> Option<&T>
Handle a click at the given position.
Returns a reference to the data if the click was within a region,
None otherwise.
§Arguments
col- The column (x) positionrow- The row (y) position
Sourcepub fn regions(&self) -> &[ClickRegion<T>]
pub fn regions(&self) -> &[ClickRegion<T>]
Get all registered regions.
Trait Implementations§
Source§impl<T: Clone + Clone> Clone for ClickRegionRegistry<T>
impl<T: Clone + Clone> Clone for ClickRegionRegistry<T>
Source§fn clone(&self) -> ClickRegionRegistry<T>
fn clone(&self) -> ClickRegionRegistry<T>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl<T> Freeze for ClickRegionRegistry<T>
impl<T> RefUnwindSafe for ClickRegionRegistry<T>where
T: RefUnwindSafe,
impl<T> Send for ClickRegionRegistry<T>where
T: Send,
impl<T> Sync for ClickRegionRegistry<T>where
T: Sync,
impl<T> Unpin for ClickRegionRegistry<T>where
T: Unpin,
impl<T> UnwindSafe for ClickRegionRegistry<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more