hide cursor on canvas, add mouse focus event, brush preview solid when small

This commit is contained in:
2019-03-06 20:39:27 +01:00
parent 5eba9f1227
commit 3296de98cc
15 changed files with 194 additions and 24 deletions

View File

@@ -93,7 +93,23 @@ kEventResult Node::on_event(Event* e)
kEventResult ret = kEventResult::Available;
if (current_mouse_capture)
{
if (e->m_cat == kEventCategory::MouseEvent && child_mouse_focus != current_mouse_capture)
{
MouseEvent* me = static_cast<MouseEvent*>(e);
if (child_mouse_focus)
{
MouseEvent e2 = *me;
e2.m_type = kEventType::MouseUnfocus;
child_mouse_focus->handle_event(&e2);
}
MouseEvent e2 = *me;
e2.m_type = kEventType::MouseFocus;
current_mouse_capture->handle_event(&e2);
child_mouse_focus = current_mouse_capture;
}
return current_mouse_capture->on_event(e);
}
bool skip_children = false;
skip_children |= (e->m_cat == kEventCategory::MouseEvent || e->m_cat == kEventCategory::GestureEvent) &&
@@ -114,6 +130,20 @@ kEventResult Node::on_event(Event* e)
}
else
{
if (e->m_cat == kEventCategory::MouseEvent && child_mouse_focus != it->get())
{
MouseEvent* me = static_cast<MouseEvent*>(e);
if (child_mouse_focus)
{
MouseEvent e2 = *me;
e2.m_type = kEventType::MouseUnfocus;
child_mouse_focus->handle_event(&e2);
}
MouseEvent e2 = *me;
e2.m_type = kEventType::MouseFocus;
(*it)->handle_event(&e2);
child_mouse_focus = it->get();
}
ret = kEventResult::Consumed;
break;
}
@@ -312,6 +342,8 @@ void Node::remove_child(Node* n)
YGNodeRemoveChild(y_node, n->y_node);
on_child_removed(n);
m_children.erase(i);
if (child_mouse_focus == n)
child_mouse_focus = nullptr;
}
}
@@ -324,6 +356,7 @@ void Node::remove_all_children()
on_child_removed(n.get());
}
m_children.clear();
child_mouse_focus = nullptr;
}
void Node::move_child(Node* n, int index)