Index: mouse.c =================================================================== RCS file: /work/eich/freedesktop/cvs/xorg/xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c,v retrieving revision 1.11 diff -u -r1.11 mouse.c --- mouse.c 15 Aug 2005 23:48:35 -0000 1.11 +++ mouse.c 23 Nov 2005 17:14:38 -0000 @@ -396,8 +396,10 @@ pMse->emulate3Buttons = xf86SetBoolOption(pInfo->options, "Emulate3Buttons", FALSE); - if (!xf86FindOptionValue(pInfo->options,"Emulate3Buttons")) + if (!xf86FindOptionValue(pInfo->options,"Emulate3Buttons")) { pMse->emulate3ButtonsSoft = TRUE; + pMse->emulate3Buttons = TRUE; + } pMse->emulate3Timeout = xf86SetIntOption(pInfo->options, "Emulate3Timeout", 50); @@ -2183,6 +2185,9 @@ buttons &= ~wheelButtonMask; } + if (pMse->emulate3ButtonsSoft && pMse->emulate3Pending && (dx || dy)) + buttonTimer(pInfo); + if (dx || dy) xf86PostMotionEvent(pInfo->dev, 0, 0, 2, dx, dy); @@ -2259,7 +2264,8 @@ } if (pMse->emulate3Buttons - && (!(buttons & 0x02) || Emulate3ButtonsSoft(pInfo))) { + && (!(buttons & 0x02) || Emulate3ButtonsSoft(pInfo)) + && (!pMse->emulate3ButtonsSoft || (!dx && !dy))) { /* handle all but buttons 1 & 3 normally */