From 4504c66124203134fb70e9008082ef966db4a544 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 6 May 2012 15:45:48 +0000 Subject: disable warping for tablet events (X11 only), added TODO's for OSX and win32. --- intern/ghost/intern/GHOST_SystemCocoa.mm | 14 +++++++++++++- intern/ghost/intern/GHOST_SystemWin32.cpp | 7 ++++++- intern/ghost/intern/GHOST_SystemX11.cpp | 12 ++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 50d8cfd074b..898171b344e 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1488,7 +1488,19 @@ GHOST_TSuccess GHOST_SystemCocoa::handleMouseEvent(void *eventPtr) } case NSMouseMoved: - switch (window->getCursorGrabMode()) { + GHOST_TGrabCursorMode grab_mode = window->getCursorGrabMode(); + + /* TODO: CHECK IF THIS IS A TABLET EVENT */ + bool is_tablet = false; + + if (is_tablet && + (grab_mode != GHOST_kGrabDisable) && + (grab_mode != GHOST_kGrabNormal)) + { + grab_mode = GHOST_kGrabDisable; + } + + switch (grab_mode) { case GHOST_kGrabHide: //Cursor hidden grab operation : no cursor move { GHOST_TInt32 x_warp, y_warp, x_accum, y_accum, x, y; diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 2d8cf13ac4f..b00ff690cfa 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -649,7 +649,12 @@ GHOST_EventCursor* GHOST_SystemWin32::processCursorEvent(GHOST_TEventType type, system->getCursorPosition(x_screen, y_screen); - if(window->getCursorGrabMode() != GHOST_kGrabDisable && window->getCursorGrabMode() != GHOST_kGrabNormal) + /* TODO: CHECK IF THIS IS A TABLET EVENT */ + bool is_tablet = false; + + if (is_tablet == false && + window->getCursorGrabMode() != GHOST_kGrabDisable && + window->getCursorGrabMode() != GHOST_kGrabNormal) { GHOST_TInt32 x_new= x_screen; GHOST_TInt32 y_new= y_screen; diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 857d9e79e57..6a2e6f59717 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -471,8 +471,16 @@ GHOST_SystemX11::processEvent(XEvent *xe) case MotionNotify: { XMotionEvent &xme = xe->xmotion; - - if(window->getCursorGrabMode() != GHOST_kGrabDisable && window->getCursorGrabMode() != GHOST_kGrabNormal) + +#ifdef WITH_X11_XINPUT + bool is_tablet = window->GetXTablet().CommonData.Active != GHOST_kTabletModeNone; +#else + bool is_tablet = false; +#endif + + if(is_tablet == false && + window->getCursorGrabMode() != GHOST_kGrabDisable && + window->getCursorGrabMode() != GHOST_kGrabNormal) { GHOST_TInt32 x_new= xme.x_root; GHOST_TInt32 y_new= xme.y_root; -- cgit v1.2.3