wgui: event results/blocking for overlapping content, rev iterate events for root node

This commit is contained in:
Aleksander
2025-10-05 20:11:49 +02:00
parent 89c083991f
commit efcc41de19
8 changed files with 131 additions and 76 deletions

View File

@@ -11,7 +11,7 @@ use crate::{
util::centered_matrix,
},
widget::{
WidgetData,
EventResult, WidgetData,
label::{WidgetLabel, WidgetLabelParams},
rectangle::{WidgetRectangle, WidgetRectangleParams},
util::WLength,
@@ -159,7 +159,7 @@ fn register_event_mouse_enter<U1, U2>(
true,
));
state.borrow_mut().hovered = true;
Ok(())
Ok(EventResult::Pass)
}),
);
}
@@ -183,7 +183,7 @@ fn register_event_mouse_leave<U1, U2>(
false,
));
state.borrow_mut().hovered = false;
Ok(())
Ok(EventResult::Pass)
}),
);
}
@@ -211,14 +211,15 @@ fn register_event_mouse_press<U1, U2>(
true,
);
if state.hovered {
state.down = true;
}
common.alterables.trigger_haptics();
common.alterables.mark_redraw();
Ok(())
if state.hovered {
state.down = true;
Ok(EventResult::Consumed)
} else {
Ok(EventResult::Pass)
}
}),
);
}
@@ -244,6 +245,9 @@ fn register_event_mouse_release<U1, U2>(
false,
);
common.alterables.trigger_haptics();
common.alterables.mark_redraw();
let mut state = state.borrow_mut();
if state.down {
state.down = false;
@@ -253,12 +257,10 @@ fn register_event_mouse_release<U1, U2>(
{
on_click(common, ButtonClickEvent {})?;
}
Ok(EventResult::Consumed)
} else {
Ok(EventResult::Pass)
}
common.alterables.trigger_haptics();
common.alterables.mark_redraw();
Ok(())
}),
);
}