diff options
| author | Max Verevkin <maxxverrr@gmail.com> | 2022-04-01 21:50:19 +0300 |
|---|---|---|
| committer | Max Verevkin <maxxverrr@gmail.com> | 2022-04-01 21:50:19 +0300 |
| commit | 7bcaa341b8685ba411d206c1a89dc3ca77aa71bb (patch) | |
| tree | 917dec11c47ce71fe9486e56f94015bd12c496b7 /src/button_manager.rs | |
| download | i3bar-mango-7bcaa341b8685ba411d206c1a89dc3ca77aa71bb.tar.gz | |
initial commit
Diffstat (limited to 'src/button_manager.rs')
| -rw-r--r-- | src/button_manager.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/button_manager.rs b/src/button_manager.rs new file mode 100644 index 0000000..e46a139 --- /dev/null +++ b/src/button_manager.rs @@ -0,0 +1,19 @@ +#[derive(Default)] +pub struct ButtonManager<T = usize>(Vec<(f64, f64, T)>); + +impl<T> ButtonManager<T> { + pub fn push(&mut self, x_offset: f64, width: f64, elem: T) { + self.0.push((x_offset, width, elem)); + } + + pub fn clear(&mut self) { + self.0.clear() + } + + pub fn click(&self, x: f64) -> Option<&T> { + self.0 + .iter() + .find(|(x_off, w, _)| x >= *x_off && x <= *x_off + *w) + .map(|(_, _, e)| e) + } +} |
