diff --git a/src/canvas_modes.cpp b/src/canvas_modes.cpp index 8e0a4cd..81df12f 100644 --- a/src/canvas_modes.cpp +++ b/src/canvas_modes.cpp @@ -16,20 +16,20 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc) switch (me->m_type) { case kEventType::MouseDownL: - if (canvas->m_touch_lock && me->m_source == kEventSource::Touch) - { - m_draggingR = true; - m_dragR_start = me->m_pos; - m_pan_start = canvas->m_pan; - node->mouse_capture(); - } +// if (canvas->m_touch_lock && me->m_source == kEventSource::Touch) +// { +// m_draggingR = true; +// m_dragR_start = me->m_pos; +// m_pan_start = canvas->m_pan; +// node->mouse_capture(); +// } break; case kEventType::MouseUpL: - if (canvas->m_touch_lock && me->m_source == kEventSource::Touch) - { - m_draggingR = false; - node->mouse_release(); - } +// if (canvas->m_touch_lock && me->m_source == kEventSource::Touch) +// { +// m_draggingR = false; +// node->mouse_release(); +// } break; case kEventType::MouseDownR: if (App::I.keys[(int)kKey::KeyAlt]) diff --git a/src/main.cpp b/src/main.cpp index bd41b17..b57264a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,6 +30,8 @@ int gl_count = 0; std::deque> tasklist; std::mutex task_mutex; float timer_stylus = 0; +float timer_ink_touch = 0; +float timer_ink_pen = 0; bool sandboxed = false; //Returns the last Win32 error, in string format. Returns an empty string if there is no error. @@ -603,6 +605,8 @@ int main(int argc, char** argv) render_timer += dt; frame_timer += dt; timer_stylus += dt; + timer_ink_touch += dt; + timer_ink_pen += dt; t0 = t1; if (one_sec > 1.f) @@ -644,14 +648,23 @@ int main(int argc, char** argv) App::I.redraw = true; render_timer = 0; } - if (timer_stylus > 0.1 && WacomTablet::I.m_stylus) + if (timer_stylus > 0.1 && (WacomTablet::I.m_stylus || WacomTablet::I.m_eraser)) { WacomTablet::I.m_stylus = false; WacomTablet::I.m_eraser = false; - WacomTablet::I.m_ink = false; + App::I.redraw = true; + } + if (timer_ink_pen > 0.1 && WacomTablet::I.m_ink_pen) + { WacomTablet::I.m_ink_pen = false; App::I.redraw = true; } + if (timer_ink_touch > 0.1 && WacomTablet::I.m_ink_touch) + { + WacomTablet::I.m_ink_touch = false; + App::I.redraw = true; + } + if (App::I.redraw) { async_lock(); @@ -802,9 +815,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) std::lock_guard lock(task_mutex); tasklist.emplace_back([lp, extra, p = WacomTablet::I.get_pressure()]{ kEventSource pointer_source; - if (WacomTablet::I.m_ink) + if (WacomTablet::I.m_ink_pen || WacomTablet::I.m_ink_touch) { - pointer_source = WacomTablet::I.m_ink_pen? kEventSource::Stylus : kEventSource::Touch; + pointer_source = WacomTablet::I.m_ink_pen ? kEventSource::Stylus : kEventSource::Touch; } else { @@ -822,7 +835,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) tasklist.emplace_back([lp, extra, hWnd, p = WacomTablet::I.get_pressure()]{ SetCapture(hWnd); kEventSource pointer_source; - if (WacomTablet::I.m_ink) + if (WacomTablet::I.m_ink_pen || WacomTablet::I.m_ink_touch) { pointer_source = WacomTablet::I.m_ink_pen ? kEventSource::Stylus : kEventSource::Touch; } @@ -843,7 +856,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) WacomTablet::I.reset_pressure(); ReleaseCapture(); kEventSource pointer_source; - if (WacomTablet::I.m_ink) + if (WacomTablet::I.m_ink_pen || WacomTablet::I.m_ink_touch) { pointer_source = WacomTablet::I.m_ink_pen ? kEventSource::Stylus : kEventSource::Touch; } @@ -863,7 +876,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) tasklist.emplace_back([lp, extra, hWnd]{ SetCapture(hWnd); kEventSource pointer_source; - if (WacomTablet::I.m_ink) + if (WacomTablet::I.m_ink_pen || WacomTablet::I.m_ink_touch) { pointer_source = WacomTablet::I.m_ink_pen ? kEventSource::Stylus : kEventSource::Touch; } @@ -883,7 +896,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) tasklist.emplace_back([lp, extra]{ ReleaseCapture(); kEventSource pointer_source; - if (WacomTablet::I.m_ink) + if (WacomTablet::I.m_ink_pen || WacomTablet::I.m_ink_touch) { pointer_source = WacomTablet::I.m_ink_pen ? kEventSource::Stylus : kEventSource::Touch; } @@ -948,8 +961,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) // success, process touchInfo // mark as handled to skip call to DefWindowProc //fHandled = TRUE; - WacomTablet::I.m_ink = true; - WacomTablet::I.m_ink_pen = false; + timer_ink_touch = 0; + WacomTablet::I.m_ink_touch = true; WacomTablet::I.m_pen_pres = 1; } break; @@ -965,7 +978,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) // mark as handled to skip call to DefWindowProc //fHandled = TRUE; //penInfo.pressure - WacomTablet::I.m_ink = true; + timer_ink_pen = 0; WacomTablet::I.m_ink_pen = true; WacomTablet::I.m_pen_pres = (float)penInfo.pressure / 1024.f; App::I.set_stylus(); diff --git a/src/wacom.h b/src/wacom.h index f53240d..d9079b7 100644 --- a/src/wacom.h +++ b/src/wacom.h @@ -20,8 +20,8 @@ public: bool m_mouse_down = false; bool m_stylus = false; bool m_eraser = false; - bool m_ink = false; bool m_ink_pen = false; + bool m_ink_touch = false; HCTX TabletInit(HWND hWnd);