Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-05-06 19:45:48 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-05-06 19:45:48 +0400
commit4504c66124203134fb70e9008082ef966db4a544 (patch)
treebd1ee6c554e0e0a993e6467b2c0e7623dfacb9b6
parenta058ac9c50fefe9d8ee0519a694d2ca371f358bd (diff)
disable warping for tablet events (X11 only), added TODO's for OSX and win32.
-rw-r--r--intern/ghost/intern/GHOST_SystemCocoa.mm14
-rw-r--r--intern/ghost/intern/GHOST_SystemWin32.cpp7
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp12
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;