summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@nokia.com>2009-08-24 07:01:08 (GMT)
committerRichard Moe Gustavsen <richard.gustavsen@nokia.com>2009-08-24 07:06:04 (GMT)
commit2593f07f5c4f736c4b6f5d41a96049801f29e13c (patch)
treeeb0525ef01244c9d0dcd857af11c0da43bd934ae
parent6af5f111e0f9463c3a907e187b1276c947ed43e2 (diff)
downloadQt-2593f07f5c4f736c4b6f5d41a96049801f29e13c.zip
Qt-2593f07f5c4f736c4b6f5d41a96049801f29e13c.tar.gz
Qt-2593f07f5c4f736c4b6f5d41a96049801f29e13c.tar.bz2
Gestures, Mac: remove pan gesture from qabstractscrollarea
On Mac there really is no native pan gesture. Instead, this gesture is delivered as mouse wheel events. So adding a pan gesture to qabstractscrollarea means that it will get both wheel and pan events. And both will try to move the viweport. I think that the correct thing to do here is to not apply a pan gesture by default on all scroll areas.
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp11
-rw-r--r--src/gui/widgets/qabstractscrollarea_p.h2
2 files changed, 9 insertions, 4 deletions
diff --git a/src/gui/widgets/qabstractscrollarea.cpp b/src/gui/widgets/qabstractscrollarea.cpp
index 533a56b..28435ef 100644
--- a/src/gui/widgets/qabstractscrollarea.cpp
+++ b/src/gui/widgets/qabstractscrollarea.cpp
@@ -159,9 +159,9 @@ QT_BEGIN_NAMESPACE
QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate()
:hbar(0), vbar(0), vbarpolicy(Qt::ScrollBarAsNeeded), hbarpolicy(Qt::ScrollBarAsNeeded),
viewport(0), cornerWidget(0), left(0), top(0), right(0), bottom(0),
- xoffset(0), yoffset(0), viewportFilter(0), panGesture(0)
+ xoffset(0), yoffset(0), viewportFilter(0)
#ifdef Q_WS_WIN
- , singleFingerPanEnabled(false)
+ , panGesture(0), singleFingerPanEnabled(false)
#endif
{
}
@@ -295,8 +295,10 @@ void QAbstractScrollAreaPrivate::init()
q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layoutChildren();
- panGesture = new QPanGesture(q);
+#ifdef Q_WS_WIN
+ panGesture = new QPanGesture(viewport);
QObject::connect(panGesture, SIGNAL(triggered()), q, SLOT(_q_gestureTriggered()));
+#endif // Q_WS_WIN
}
#ifdef Q_WS_WIN
@@ -547,6 +549,9 @@ void QAbstractScrollArea::setViewport(QWidget *widget)
if (isVisible())
d->viewport->show();
QMetaObject::invokeMethod(this, "setupViewport", Q_ARG(QWidget *, widget));
+#ifdef Q_WS_WIN
+ d->panGesture->setGestureTarget(widget);
+#endif
delete oldViewport;
}
}
diff --git a/src/gui/widgets/qabstractscrollarea_p.h b/src/gui/widgets/qabstractscrollarea_p.h
index 211b7a7..a5acdd1 100644
--- a/src/gui/widgets/qabstractscrollarea_p.h
+++ b/src/gui/widgets/qabstractscrollarea_p.h
@@ -102,8 +102,8 @@ public:
QScopedPointer<QObject> viewportFilter;
virtual void _q_gestureTriggered();
- QPanGesture *panGesture;
#ifdef Q_WS_WIN
+ QPanGesture *panGesture;
bool singleFingerPanEnabled;
void setSingleFingerPanEnabled(bool on = true);
#endif