summaryrefslogtreecommitdiffstats
path: root/src/other/panmodefilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/other/panmodefilter.cpp')
-rw-r--r--src/other/panmodefilter.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/other/panmodefilter.cpp b/src/other/panmodefilter.cpp
index 868d047..0757159 100644
--- a/src/other/panmodefilter.cpp
+++ b/src/other/panmodefilter.cpp
@@ -34,6 +34,8 @@
#include "mouseindicator.h"
#include "widget.h"
#include "application.h"
+#include "widgetmanager.h"
+#include "displaywidget.h"
#include <QtGui/QGraphicsSceneEvent>
@@ -50,7 +52,9 @@ PanModeFilter::~PanModeFilter()
bool PanModeFilter::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
Widget *widget = static_cast<Widget *>(watched);
+ const QRectF displayRect = widget->widgetManager()->display()->boundingRect();
QGraphicsSceneMouseEvent *ev = 0;
+ QPointF validPoint;
QtSimulatorPrivate::TouchEventData touchEvent;
switch (event->type()) {
case QEvent::GraphicsSceneMousePress:
@@ -107,13 +111,15 @@ bool PanModeFilter::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
break;
case QEvent::GraphicsSceneMouseMove:
ev = static_cast<QGraphicsSceneMouseEvent *>(event);
+ validPoint = constrainPointToRectangle(ev->pos(), displayRect);
switch (mState) {
case updateFirstPoint:
- mValuePoints[0]->setCenter(ev->pos());
+ mValuePoints[0]->setCenter(validPoint);
return true;
case updateSecondPoint:
- mValuePoints[1]->setCenter(ev->pos());
- mValuePoints[0]->setCenter(mValuePoints[1]->center() - mPanDiff);
+ mValuePoints[1]->setCenter(validPoint);
+ validPoint = constrainPointToRectangle(ev->pos() - mPanDiff, displayRect);
+ mValuePoints[0]->setCenter(validPoint);
touchEvent = createTouchEventFromMouseEvent(widget, ev);
QtSimulatorPrivate::RemoteMetacall<void>::call(widget->owner->socket(),
QtSimulatorPrivate::NoSync,