Merge remote-tracking branch 'origin/master' into tui_focus

This commit is contained in:
demonthos committed 2022-05-07 14:08:10 -05:00
commit bd105c9bc6
6 files changed
+95 -78

No files matched your search

+75 -66
View File
@@ -376,78 +376,18 @@ impl InnerInputState {
}
}
// mouseup
if released {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("mouseup") {
let node_layout = layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"mouseup",
Arc::new(prepare_mouse_data(mouse_data, node_layout)),
&mut will_bubble,
resolved_events,
node,
dom,
);
}
}
}
// click
if released && mouse_data.button == 0 {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("click") {
let node_layout = layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"click",
Arc::new(prepare_mouse_data(mouse_data, node_layout)),
&mut will_bubble,
resolved_events,
node,
dom,
);
}
}
}
// contextmenu
if released && mouse_data.button == 2 {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("contextmenu") {
let node_layout = layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"contextmenu",
Arc::new(prepare_mouse_data(mouse_data, node_layout)),
&mut will_bubble,
resolved_events,
node,
dom,
);
}
}
}
// wheel
if let Some(w) = wheel_data {
if wheel_delta != 0.0 {
{
// mouseup
if released {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("wheel") {
for node in dom.get_listening_sorted("mouseup") {
let node_layout = layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"wheel",
Arc::new(w.clone()),
"mouseup",
Arc::new(prepare_mouse_data(mouse_data, node_layout)),
&mut will_bubble,
resolved_events,
node,
@@ -458,6 +398,75 @@ impl InnerInputState {
}
}
{
// click
if mouse_data.button == 0 && released {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("click") {
let node_layout = layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"click",
Arc::new(prepare_mouse_data(mouse_data, node_layout)),
&mut will_bubble,
resolved_events,
node,
dom,
);
}
}
}
}
{
// contextmenu
if mouse_data.button == 2 && released {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("contextmenu") {
let node_layout = layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"contextmenu",
Arc::new(prepare_mouse_data(mouse_data, node_layout)),
&mut will_bubble,
resolved_events,
node,
dom,
);
}
}
}
}
{
// wheel
if let Some(w) = wheel_data {
if wheel_delta != 0.0 {
let mut will_bubble = FxHashSet::default();
for node in dom.get_listening_sorted("wheel") {
let node_layout =
layout.layout(node.state.layout.node.unwrap()).unwrap();
let currently_contains = layout_contains_point(node_layout, new_pos);
if currently_contains {
try_create_event(
"wheel",
Arc::new(w.clone()),
&mut will_bubble,
resolved_events,
node,
dom,
);
}
}
}
}
}
{
// mouseleave
let mut will_bubble = FxHashSet::default();
+2 -2
View File
@@ -118,7 +118,7 @@ fn render_vdom(
terminal.clear().unwrap();
}
let to_rerender: fxhash::FxHashSet<usize> = vec![0].into_iter().collect();
let mut to_rerender: fxhash::FxHashSet<usize> = vec![0].into_iter().collect();
let mut updated = true;
loop {
@@ -221,7 +221,7 @@ fn render_vdom(
// update the style and layout
let mut any_map = AnyMap::new();
any_map.insert(stretch.clone());
let _to_rerender = rdom.update_state(vdom, to_update, any_map).unwrap();
to_rerender = rdom.update_state(vdom, to_update, any_map).unwrap();
}
}