refactor canvas modes

This commit is contained in:
2019-02-01 22:51:25 +01:00
parent e3f6d1cc44
commit 8e5a8eec1b
12 changed files with 326 additions and 272 deletions

View File

@@ -14,6 +14,8 @@ void NodeButtonCustom::clone_copy(Node* dest) const
n->color_normal = color_normal;
n->color_hover = color_hover;
n->color_down = color_down;
n->color_active = color_active;
n->m_active = m_active;
n->m_mouse_ignore = false;
n->m_color = color_normal;
}
@@ -27,6 +29,14 @@ void NodeButtonCustom::loaded()
m_mouse_ignore = false;
}
void NodeButtonCustom::set_active(bool active)
{
if (m_active == active)
return;
m_active = active;
m_color = m_active ? color_active : (m_mouse_inside ? color_hover : color_normal);
}
void NodeButtonCustom::set_color(const glm::vec4& c)
{
color_normal = c;
@@ -42,24 +52,24 @@ kEventResult NodeButtonCustom::handle_event(Event* e)
m_color = color_hover;
break;
case kEventType::MouseLeave:
m_color = color_normal;
m_color = m_active ? color_active : color_normal;
break;
case kEventType::MouseDownL:
m_color = color_down;
m_color = m_active ? color_active : color_down;
mouse_capture();
break;
case kEventType::MouseUpL:
// if using touch or stylus, unfocus the button
if (((MouseEvent*)e)->m_source == kEventSource::Mouse)
m_color = m_mouse_inside ? color_hover : color_normal;
m_color = m_active ? color_active : (m_mouse_inside ? color_hover : color_normal);
else
m_color = color_normal;
m_color = m_active ? color_active : color_normal;
mouse_release();
if (m_mouse_inside && on_click != nullptr)
on_click(this);
break;
case kEventType::MouseCancel:
m_color = color_normal;
m_color = m_active ? color_active : color_normal;
mouse_release();
break;
default: