[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25966] trunk/blender/intern/ghost/intern: Cocoa : properly distinguish mouse from multitouch trackpad scroll events
Damien Plisson
damien.plisson at yahoo.fr
Wed Jan 13 18:43:42 CET 2010
Revision: 25966
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25966
Author: damien78
Date: 2010-01-13 18:43:42 +0100 (Wed, 13 Jan 2010)
Log Message:
-----------
Cocoa : properly distinguish mouse from multitouch trackpad scroll events
Mighty mouse trackball now fires proper wheel events (and not trackpad pan ones)
Modified Paths:
--------------
trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h
trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h 2010-01-13 14:39:08 UTC (rev 25965)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h 2010-01-13 17:43:42 UTC (rev 25966)
@@ -280,6 +280,9 @@
/** Multitouch trackpad availability */
bool m_hasMultiTouchTrackpad;
+
+ /** Multitouch gesture in progress, useful to distinguish trackpad from mouse scroll events */
+ bool m_isGestureInProgress;
};
#endif // _GHOST_SYSTEM_COCOA_H_
Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm 2010-01-13 14:39:08 UTC (rev 25965)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm 2010-01-13 17:43:42 UTC (rev 25966)
@@ -516,6 +516,7 @@
m_modifierMask =0;
m_pressedMouseButtons =0;
+ m_isGestureInProgress = false;
m_cursorDelta_x=0;
m_cursorDelta_y=0;
m_outsideLoopEventProcessed = false;
@@ -885,6 +886,8 @@
case NSOtherMouseDragged:
case NSEventTypeMagnify:
case NSEventTypeRotate:
+ case NSEventTypeBeginGesture:
+ case NSEventTypeEndGesture:
handleMouseEvent(event);
break;
@@ -896,8 +899,6 @@
/* Trackpad features, fired only from OS X 10.5.2
case NSEventTypeGesture:
case NSEventTypeSwipe:
- case NSEventTypeBeginGesture:
- case NSEventTypeEndGesture:
break; */
/*Unused events
@@ -1352,8 +1353,8 @@
case NSScrollWheel:
{
- /* Send Wheel event if sent from the mouse, trackpad event otherwise */
- if (!m_hasMultiTouchTrackpad || ([event subtype] == NSMouseEventSubtype)) {
+ /* Send trackpad event if inside a trackpad gesture, send wheel event otherwise */
+ if (!m_hasMultiTouchTrackpad || !m_isGestureInProgress) {
GHOST_TInt32 delta;
double deltaF = [event deltaY];
@@ -1399,6 +1400,12 @@
pushEvent(new GHOST_EventTrackpad([event timestamp]*1000, window, GHOST_kTrackpadEventRotate, mousePos.x, mousePos.y,
-[event rotation] * 5.0, 0));
}
+ case NSEventTypeBeginGesture:
+ m_isGestureInProgress = true;
+ break;
+ case NSEventTypeEndGesture:
+ m_isGestureInProgress = false;
+ break;
default:
return GHOST_kFailure;
break;
More information about the Bf-blender-cvs
mailing list