summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2011-09-19 15:07:15 +0200
committerQt by Nokia <qt-info@nokia.com>2011-09-19 16:37:51 +0200
commitdc91f2f29b110e29f7915e7074a85fb8e44a889a (patch)
tree0e6cc6d1fcb15ce59dfaa6e2e5b29cc466290b35
parenta2010048300809f16c4de7f8f8281902098413d8 (diff)
Cocoa platform plugin: Implement multitouch support.
Change-Id: Ic4b5bc4e48bd1e70cffedf15530b8a933037de66 Reviewed-on: http://codereview.qt-project.org/5153 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
-rw-r--r--src/plugins/platforms/cocoa/cocoa.pro2
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm3
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm29
3 files changed, 34 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro
index d6801e0bed..40d3323819 100644
--- a/src/plugins/platforms/cocoa/cocoa.pro
+++ b/src/plugins/platforms/cocoa/cocoa.pro
@@ -18,6 +18,7 @@ OBJECTIVE_SOURCES += main.mm \
qcocoamenu.mm \
qmenu_mac.mm \
qcocoahelpers.mm \
+ qmultitouch_mac.mm \
HEADERS += qcocoaintegration.h \
qcocoabackingstore.h \
@@ -34,6 +35,7 @@ HEADERS += qcocoaintegration.h \
qcocoamenu.h \
qmenu_mac.h \
qcocoahelpers.h \
+ qmultitouch_mac_p.h \
RESOURCES += qcocoaresources.qrc
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 7e4d4217ef..00016cb9d1 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -90,6 +90,9 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
m_contentView = [[QNSView alloc] initWithQWindow:tlw];
+ // Accept touch events by default.
+ [m_contentView setAcceptsTouchEvents:YES];
+
setGeometry(tlw->geometry());
[m_nsWindow setContentView:m_contentView];
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index f3c71d9eed..f215c9df95 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -43,6 +43,7 @@
#include "qnsview.h"
#include "qcocoahelpers.h"
+#include "qmultitouch_mac_p.h"
#include <QtGui/QWindowSystemInterface>
#include <QtCore/QDebug>
@@ -229,6 +230,34 @@
[self handleMouseEvent:theEvent];
}
+- (void)touchesBeganWithEvent:(NSEvent *)event;
+{
+ const NSTimeInterval timestamp = [event timestamp];
+ const QList<QWindowSystemInterface::TouchPoint> points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false);
+ QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, QEvent::TouchBegin, QTouchEvent::TouchPad, points);
+}
+
+- (void)touchesMovedWithEvent:(NSEvent *)event;
+{
+ const NSTimeInterval timestamp = [event timestamp];
+ const QList<QWindowSystemInterface::TouchPoint> points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false);
+ QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, QEvent::TouchUpdate, QTouchEvent::TouchPad, points);
+}
+
+- (void)touchesEndedWithEvent:(NSEvent *)event;
+{
+ const NSTimeInterval timestamp = [event timestamp];
+ const QList<QWindowSystemInterface::TouchPoint> points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false);
+ QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, QEvent::TouchEnd, QTouchEvent::TouchPad, points);
+}
+
+- (void)touchesCancelledWithEvent:(NSEvent *)event;
+{
+ const NSTimeInterval timestamp = [event timestamp];
+ const QList<QWindowSystemInterface::TouchPoint> points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false);
+ QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, QEvent::TouchEnd, QTouchEvent::TouchPad, points);
+}
+
#ifndef QT_NO_WHEELEVENT
- (void)scrollWheel:(NSEvent *)theEvent
{