refactor canvas modes
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user