[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