[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