diff options
author | marha <marha@users.sourceforge.net> | 2010-05-18 12:10:10 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-05-18 12:10:10 +0000 |
commit | 4787c5a8db870b0cff2326bd750c4d96c7d84e51 (patch) | |
tree | d80c8bdc25dd157be487d94b0a66c809af67f4b8 /xorg-server/hw/xquartz | |
parent | ec97eb93862ded9d95eb73feba6bef1c04cd13d2 (diff) | |
download | vcxsrv-4787c5a8db870b0cff2326bd750c4d96c7d84e51.tar.gz vcxsrv-4787c5a8db870b0cff2326bd750c4d96c7d84e51.tar.bz2 vcxsrv-4787c5a8db870b0cff2326bd750c4d96c7d84e51.zip |
svn merge -r603:HEAD "^/branches/released" .
Diffstat (limited to 'xorg-server/hw/xquartz')
-rw-r--r-- | xorg-server/hw/xquartz/X11Application.m | 28 | ||||
-rw-r--r-- | xorg-server/hw/xquartz/mach-startup/bundle-main.c | 5 |
2 files changed, 25 insertions, 8 deletions
diff --git a/xorg-server/hw/xquartz/X11Application.m b/xorg-server/hw/xquartz/X11Application.m index c9a0d669f..805ed9933 100644 --- a/xorg-server/hw/xquartz/X11Application.m +++ b/xorg-server/hw/xquartz/X11Application.m @@ -1030,20 +1030,32 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe if(isMouseOrTabletEvent) { static NSPoint lastpt; NSWindow *window = [e window]; - NSRect screen = [[[NSScreen screens] objectAtIndex:0] frame];; - + NSRect screen = [[[NSScreen screens] objectAtIndex:0] frame]; + BOOL hasUntrustedPointerDelta; + + // NSEvents for tablets are not consistent wrt deltaXY between events, so we cannot rely on that + // Thus tablets will be subject to the warp-pointer bug worked around by the delta, but tablets + // are not normally used in cases where that bug would present itself, so this is a fair tradeoff + // <rdar://problem/7111003> deltaX and deltaY are incorrect for NSMouseMoved, NSTabletPointEventSubtype + // http://xquartz.macosforge.org/trac/ticket/288 + hasUntrustedPointerDelta = isTabletEvent; + + // The deltaXY for middle click events also appear erroneous after fast user switching + // <rdar://problem/7979468> deltaX and deltaY are incorrect for NSOtherMouseDown and NSOtherMouseUp after FUS + // http://xquartz.macosforge.org/trac/ticket/389 + hasUntrustedPointerDelta = hasUntrustedPointerDelta || [e type] == NSOtherMouseDown || [e type] == NSOtherMouseUp; + + // The deltaXY for scroll events correspond to the scroll delta, not the pointer delta + // <rdar://problem/7989690> deltaXY for wheel events are being sent as mouse movement + hasUntrustedPointerDelta = hasUntrustedPointerDelta || [e type] == NSScrollWheel; + if (window != nil) { NSRect frame = [window frame]; location = [e locationInWindow]; location.x += frame.origin.x; location.y += frame.origin.y; lastpt = location; - } else if(isTabletEvent) { - // NSEvents for tablets are not consistent wrt deltaXY between events, so we cannot rely on that - // Thus tablets will be subject to the warp-pointer bug worked around by the delta, but tablets - // are not normally used in cases where that bug would present itself, so this is a fair tradeoff - // <rdar://problem/7111003> deltaX and deltaY are incorrect for NSMouseMoved, NSTabletPointEventSubtype - // http://xquartz.macosforge.org/trac/ticket/288 + } else if(hasUntrustedPointerDelta) { location = [e locationInWindow]; lastpt = location; } else { diff --git a/xorg-server/hw/xquartz/mach-startup/bundle-main.c b/xorg-server/hw/xquartz/mach-startup/bundle-main.c index 42aa757ea..63a185fc8 100644 --- a/xorg-server/hw/xquartz/mach-startup/bundle-main.c +++ b/xorg-server/hw/xquartz/mach-startup/bundle-main.c @@ -75,7 +75,12 @@ extern int noPanoramiXExtension; static char __crashreporter_info_buff__[4096] = {0}; static const char *__crashreporter_info__ = &__crashreporter_info_buff__[0]; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 +// This is actually a toolchain requirement, but I'm not sure the correct check, +// but it should be fine to just only include it for Leopard and later. This line +// just tells the linker to never strip this symbol (such as for space optimization) asm (".desc ___crashreporter_info__, 0x10"); +#endif static const char *__crashreporter_info__base = "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE; |