senses are now bitflags

This commit is contained in:
2025-08-25 22:36:38 -04:00
parent e9037cdc14
commit 9780724126
7 changed files with 150 additions and 104 deletions

View File

@@ -1,27 +1,27 @@
use crate::prelude::*;
pub trait Sensable<W, Tag> {
fn on(self, sense: Sense, f: impl SenseFn) -> WidgetIdFnRet!(W);
fn on(self, sense: Senses, f: impl SenseFn) -> WidgetIdFnRet!(W);
fn id_on(
self,
sense: Sense,
senses: Senses,
f: impl FnMut(&WidgetId<W>, &mut Ui) + 'static + Clone,
) -> WidgetIdFnRet!(W)
where
W: Widget;
fn edit_on(self, sense: Sense, f: impl FnMut(&mut W) + 'static + Clone) -> WidgetIdFnRet!(W)
fn edit_on(self, senses: Senses, f: impl FnMut(&mut W) + 'static + Clone) -> WidgetIdFnRet!(W)
where
W: Widget;
}
impl<W: WidgetLike<Tag>, Tag> Sensable<W::Widget, Tag> for W {
fn on(self, sense: Sense, f: impl SenseFn) -> WidgetIdFnRet!(W::Widget) {
fn on(self, senses: Senses, f: impl SenseFn) -> WidgetIdFnRet!(W::Widget) {
move |ui| {
let id = self.add(ui);
ui.add_sensor(
&id,
Sensor {
sense,
senses,
f: Box::new(f),
},
);
@@ -30,7 +30,7 @@ impl<W: WidgetLike<Tag>, Tag> Sensable<W::Widget, Tag> for W {
}
fn id_on(
self,
sense: Sense,
senses: Senses,
mut f: impl FnMut(&WidgetId<W::Widget>, &mut Ui) + 'static + Clone,
) -> WidgetIdFnRet!(W::Widget)
where
@@ -38,17 +38,17 @@ impl<W: WidgetLike<Tag>, Tag> Sensable<W::Widget, Tag> for W {
{
self.with_id(move |ui, id| {
let id2 = id.clone();
ui.add(id.on(sense, move |ui| f(&id2, ui)))
ui.add(id.on(senses, move |ui| f(&id2, ui)))
})
}
fn edit_on(
self,
sense: Sense,
senses: Senses,
mut f: impl FnMut(&mut W::Widget) + 'static + Clone,
) -> WidgetIdFnRet!(W::Widget)
where
W::Widget: Widget,
{
self.id_on(sense, move |id, ui| f(&mut ui[id]))
self.id_on(senses, move |id, ui| f(&mut ui[id]))
}
}