[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25928] trunk/blender/intern/ghost/intern: Cocoa : activate multitouch trackpad features only on equipped macbooks

Damien Plisson damien.plisson at yahoo.fr
Tue Jan 12 15:12:44 CET 2010


Revision: 25928
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25928
Author:   damien78
Date:     2010-01-12 15:12:44 +0100 (Tue, 12 Jan 2010)

Log Message:
-----------
Cocoa : activate multitouch trackpad features only on equipped macbooks

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-12 13:42:13 UTC (rev 25927)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h	2010-01-12 14:12:44 UTC (rev 25928)
@@ -277,6 +277,9 @@
 	 * Needed because cocoa event delta cursor move takes setCursorPosition changes too.
 	 */
 	GHOST_TInt32 m_cursorDelta_x, m_cursorDelta_y;
+	
+	/** Multitouch trackpad availability */
+	bool m_hasMultiTouchTrackpad;
 };
 
 #endif // _GHOST_SYSTEM_COCOA_H_

Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2010-01-12 13:42:13 UTC (rev 25927)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2010-01-12 14:12:44 UTC (rev 25928)
@@ -509,6 +509,11 @@
 
 GHOST_SystemCocoa::GHOST_SystemCocoa()
 {
+	int mib[2];
+	struct timeval boottime;
+	size_t len;
+	char *rstring = NULL;
+	
 	m_modifierMask =0;
 	m_pressedMouseButtons =0;
 	m_cursorDelta_x=0;
@@ -519,10 +524,6 @@
 	m_displayManager->initialize();
 
 	//NSEvent timeStamp is given in system uptime, state start date is boot time
-	int mib[2];
-	struct timeval boottime;
-	size_t len;
-	
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_BOOTTIME;
 	len = sizeof(struct timeval);
@@ -530,6 +531,22 @@
 	sysctl(mib, 2, &boottime, &len, NULL, 0);
 	m_start_time = ((boottime.tv_sec*1000)+(boottime.tv_usec/1000));
 	
+	//Detect multitouch trackpad
+	mib[0] = CTL_HW;
+	mib[1] = HW_MODEL;
+	sysctl( mib, 2, NULL, &len, NULL, 0 );
+	rstring = (char*)malloc( len );
+	sysctl( mib, 2, rstring, &len, NULL, 0 );
+	
+	//Hack on MacBook revision, as multitouch avail. function missing
+	if (strstr(rstring,"MacBookAir") ||
+		(strstr(rstring,"MacBook") && (rstring[strlen(rstring)-3]>='5') && (rstring[strlen(rstring)-3]<='9')))
+		m_hasMultiTouchTrackpad = true;
+	else m_hasMultiTouchTrackpad = false;
+	
+	free( rstring );
+	rstring = NULL;
+	
 	m_ignoreWindowSizedMessages = false;
 }
 
@@ -1336,7 +1353,7 @@
 		case NSScrollWheel:
 			{
 				/* Send Wheel event if sent from the mouse, trackpad event otherwise */
-				if ([event subtype] == NSMouseEventSubtype) {
+				if (!m_hasMultiTouchTrackpad || ([event subtype] == NSMouseEventSubtype)) {
 					GHOST_TInt32 delta;
 					
 					double deltaF = [event deltaY];





More information about the Bf-blender-cvs mailing list