implementing better triangulation

This commit is contained in:
2017-10-11 10:16:54 +01:00
parent 163937b4a6
commit 32ede1be90
8 changed files with 185 additions and 54 deletions

View File

@@ -50,36 +50,31 @@ kEventResult Node::on_event(Event* e)
{
kEventResult ret = kEventResult::Available;
if (e->m_cat == kEventCategory::MouseEvent)
if (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) &&
(m_mouse_captured) && (root()->current_mouse_capture == this) && m_capture_children;
if (!skip_children)
{
for (auto it = m_children.rbegin(); it != m_children.rend(); ++it)
{
if (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) &&
(m_mouse_captured) && (root()->current_mouse_capture == this) && m_capture_children;
if (!skip_children)
if ((*it)->on_event(e) == kEventResult::Consumed)
{
for (auto it = m_children.rbegin(); it != m_children.rend(); ++it)
if (m_flood_events)
{
if ((*it)->on_event(e) == kEventResult::Consumed)
{
if (m_flood_events)
{
ret = kEventResult::Consumed;
}
else
{
return kEventResult::Consumed;
}
}
ret = kEventResult::Consumed;
}
else
{
return kEventResult::Consumed;
}
if (ret == kEventResult::Consumed)
return ret;
}
}
if (ret == kEventResult::Consumed)
return ret;
}
switch (e->m_cat)