22 lines
636 B
Rust
22 lines
636 B
Rust
use iris::prelude::*;
|
|
use std::time::Duration;
|
|
|
|
pub(crate) fn build<Rsc: HasEvents + HasTasks>(rsc: &mut Rsc, ui_state: &mut impl HasRoot<Rsc>)
|
|
where
|
|
Rsc::State: FocusHost,
|
|
{
|
|
let rect = rect(PaintId::RED).add(rsc);
|
|
rect.task_on(CursorSense::click(), async move |mut ctx| {
|
|
iris::task::sleep(Duration::from_secs(1)).await;
|
|
ctx.update(move |_, rsc| {
|
|
let rect = rect(rsc);
|
|
if rect.is_paint(&PaintId::RED) {
|
|
rect.set_paint(PaintId::BLUE);
|
|
} else {
|
|
rect.set_paint(PaintId::RED);
|
|
}
|
|
});
|
|
})
|
|
.set_root(rsc, ui_state);
|
|
}
|