wgui: event results/blocking for overlapping content, rev iterate events for root node
This commit is contained in:
@@ -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(())
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ use crate::{
|
||||
layout::{self, Layout, LayoutState, WidgetID, WidgetPair},
|
||||
renderer_vk::text::{FontWeight, TextStyle},
|
||||
widget::{
|
||||
EventResult,
|
||||
label::{WidgetLabel, WidgetLabelParams},
|
||||
rectangle::{WidgetRectangle, WidgetRectangleParams},
|
||||
util::WLength,
|
||||
@@ -154,7 +155,7 @@ fn register_event_mouse_enter<U1, U2>(
|
||||
.alterables
|
||||
.animate(anim_hover_in(state.clone(), event_data.widget_id));
|
||||
state.borrow_mut().hovered = true;
|
||||
Ok(())
|
||||
Ok(EventResult::Pass)
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -175,7 +176,7 @@ fn register_event_mouse_leave<U1, U2>(
|
||||
.alterables
|
||||
.animate(anim_hover_out(state.clone(), event_data.widget_id));
|
||||
state.borrow_mut().hovered = false;
|
||||
Ok(())
|
||||
Ok(EventResult::Pass)
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -196,14 +197,15 @@ fn register_event_mouse_press<U1, U2>(
|
||||
let rect = event_data.obj.get_as_mut::<WidgetRectangle>().unwrap();
|
||||
anim_hover(rect, 1.0, 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)
|
||||
}
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -222,6 +224,9 @@ fn register_event_mouse_release<U1, U2>(
|
||||
let rect = event_data.obj.get_as_mut::<WidgetRectangle>().unwrap();
|
||||
anim_hover(rect, 1.0, false);
|
||||
|
||||
common.alterables.trigger_haptics();
|
||||
common.alterables.mark_redraw();
|
||||
|
||||
let mut state = state.borrow_mut();
|
||||
if state.down {
|
||||
state.down = false;
|
||||
@@ -234,12 +239,10 @@ fn register_event_mouse_release<U1, U2>(
|
||||
{
|
||||
on_toggle(common, CheckboxToggleEvent { checked: state.checked })?;
|
||||
}
|
||||
Ok(EventResult::Consumed)
|
||||
} else {
|
||||
Ok(EventResult::Pass)
|
||||
}
|
||||
|
||||
common.alterables.trigger_haptics();
|
||||
common.alterables.mark_redraw();
|
||||
|
||||
Ok(())
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ use crate::{
|
||||
util,
|
||||
},
|
||||
widget::{
|
||||
EventResult,
|
||||
div::WidgetDiv,
|
||||
label::{WidgetLabel, WidgetLabelParams},
|
||||
rectangle::{WidgetRectangle, WidgetRectangleParams},
|
||||
@@ -210,7 +211,7 @@ fn register_event_mouse_enter<U1, U2>(
|
||||
common.alterables.trigger_haptics();
|
||||
state.borrow_mut().hovered = true;
|
||||
on_enter_anim(common, data.slider_handle_rect_id);
|
||||
Ok(())
|
||||
Ok(EventResult::Pass)
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -229,7 +230,7 @@ fn register_event_mouse_leave<U1, U2>(
|
||||
common.alterables.trigger_haptics();
|
||||
state.borrow_mut().hovered = false;
|
||||
on_leave_anim(common, data.slider_handle_rect_id);
|
||||
Ok(())
|
||||
Ok(EventResult::Pass)
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -249,9 +250,10 @@ fn register_event_mouse_motion<U1, U2>(
|
||||
|
||||
if state.dragging {
|
||||
state.update_value_to_mouse(event_data, &data, common);
|
||||
Ok(EventResult::Consumed)
|
||||
} else {
|
||||
Ok(EventResult::Pass)
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -273,9 +275,10 @@ fn register_event_mouse_press<U1, U2>(
|
||||
if state.hovered {
|
||||
state.dragging = true;
|
||||
state.update_value_to_mouse(event_data, &data, common);
|
||||
Ok(EventResult::Consumed)
|
||||
} else {
|
||||
Ok(EventResult::Pass)
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -296,9 +299,10 @@ fn register_event_mouse_release<U1, U2>(
|
||||
let mut state = state.borrow_mut();
|
||||
if state.dragging {
|
||||
state.dragging = false;
|
||||
Ok(EventResult::Consumed)
|
||||
} else {
|
||||
Ok(EventResult::Pass)
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user