hide cursor on canvas, add mouse focus event, brush preview solid when small
This commit is contained in:
33
src/node.cpp
33
src/node.cpp
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user