[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27510] trunk/blender/intern/ghost/intern/ GHOST_SystemX11.cpp: Patch #21569 to fix bug #21530: on X11, middle mouse button drag cancelled
Brecht Van Lommel
brecht at blender.org
Mon Mar 15 11:25:10 CET 2010
Revision: 27510
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27510
Author: blendix
Date: 2010-03-15 11:25:07 +0100 (Mon, 15 Mar 2010)
Log Message:
-----------
Patch #21569 to fix bug #21530: on X11, middle mouse button drag cancelled
when moving wheel (with horizontal scrolling), was sending middle mouse
event in cases where it should not. Patch by Anthony Edlin, thanks!
Modified Paths:
--------------
trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
Modified: trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp 2010-03-15 04:54:31 UTC (rev 27509)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp 2010-03-15 10:25:07 UTC (rev 27510)
@@ -536,38 +536,43 @@
}
case ButtonPress:
- {
- /* process wheel mouse events and break */
- if (xe->xbutton.button == 4) {
- g_event = new GHOST_EventWheel(getMilliSeconds(), window, 1);
- break;
- }
- if (xe->xbutton.button == 5) {
- g_event = new GHOST_EventWheel(getMilliSeconds(), window, -1);
- break;
- }
- }
case ButtonRelease:
{
-
XButtonEvent & xbe = xe->xbutton;
GHOST_TButtonMask gbmask = GHOST_kButtonMaskLeft;
- switch (xbe.button) {
- case Button1 : gbmask = GHOST_kButtonMaskLeft; break;
- case Button3 : gbmask = GHOST_kButtonMaskRight; break;
- /* It seems events 6 and 7 are for horizontal scrolling.
- * you can re-order button mapping like this... (swaps 6,7 with 8,9)
- * xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7"
- */
- case 8 : gbmask = GHOST_kButtonMaskButton4; break; /* Button4 is the wheel */
- case 9 : gbmask = GHOST_kButtonMaskButton5; break; /* Button5 is a wheel too */
- default:
- case Button2 : gbmask = GHOST_kButtonMaskMiddle; break;
- }
-
GHOST_TEventType type = (xbe.type == ButtonPress) ?
GHOST_kEventButtonDown : GHOST_kEventButtonUp;
+
+ /* process wheel mouse events and break, only pass on press events */
+ if(xbe.button == Button4) {
+ if(xbe.type == ButtonPress)
+ g_event = new GHOST_EventWheel(getMilliSeconds(), window, 1);
+ break;
+ }
+ else if(xbe.button == Button5) {
+ if(xbe.type == ButtonPress)
+ g_event = new GHOST_EventWheel(getMilliSeconds(), window, -1);
+ break;
+ }
+ /* process rest of normal mouse buttons */
+ if(xbe.button == Button1)
+ gbmask = GHOST_kButtonMaskLeft;
+ else if(xbe.button == Button2)
+ gbmask = GHOST_kButtonMaskMiddle;
+ else if(xbe.button == Button3)
+ gbmask = GHOST_kButtonMaskRight;
+ /* It seems events 6 and 7 are for horizontal scrolling.
+ * you can re-order button mapping like this... (swaps 6,7 with 8,9)
+ * xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7"
+ */
+ else if(xbe.button == 8)
+ gbmask = GHOST_kButtonMaskButton4;
+ else if(xbe.button == 9)
+ gbmask = GHOST_kButtonMaskButton5;
+ else
+ break;
+
g_event = new
GHOST_EventButton(
getMilliSeconds(),
More information about the Bf-blender-cvs
mailing list