implement eraser detection on windows

This commit is contained in:
2018-10-09 02:12:09 +02:00
parent dba5eef824
commit a6d0914bf8
11 changed files with 95 additions and 35 deletions

View File

@@ -362,6 +362,7 @@ void NodeCanvas::handle_resize(glm::vec2 old_size, glm::vec2 new_size)
kEventResult NodeCanvas::handle_event(Event* e)
{
static bool stylus_eraser = false;
Node::handle_event(e);
MouseEvent* me = static_cast<MouseEvent*>(e);
KeyEvent* ke = static_cast<KeyEvent*>(e);
@@ -370,17 +371,23 @@ kEventResult NodeCanvas::handle_event(Event* e)
switch (e->m_type)
{
case kEventType::MouseMove:
if (stylus_eraser != me->m_eraser)
{
ui::Canvas::set_mode(me->m_eraser ?
ui::Canvas::kCanvasMode::Erase :
ui::Canvas::kCanvasMode::Draw);
stylus_eraser = me->m_eraser;
}
case kEventType::MouseScroll:
case kEventType::MouseDownL:
case kEventType::MouseUpL:
case kEventType::MouseDownR:
case kEventType::MouseUpR:
case kEventType::MouseMove:
case kEventType::MouseCancel:
m_canvas->m_cur_pos = loc;
if (!(m_canvas->m_touch_lock && me->m_source == kEventSource::Touch))
for (auto& mode : *m_canvas->m_mode)
mode->on_MouseEvent(me, loc);
for (auto& mode : *m_canvas->m_mode)
mode->on_MouseEvent(me, loc);
break;
case kEventType::KeyDown:
if (ke->m_key == kKey::KeyE)