summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandquickitem.cpp
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2016-04-27 17:14:18 +0200
committerJohan Helsing <johan.helsing@qt.io>2016-04-29 14:50:15 +0000
commit0f1a02920eb58dd16b085e60a2b36d822f104437 (patch)
tree27a8064c65d880fecf6ef92bc48a31c9661e7c5d /src/compositor/compositor_api/qwaylandquickitem.cpp
parent0a85fba9fa9302deb364e2a0c7a3ab2c941ca562 (diff)
QML compositor: Adjust for scale factor when handling mouse events
Problem: We expose a scaleFactor property on QWaylandOutput, but it's not taken into account when handling mouse events. Resulting in wrong position for clicks, incorrect resizing etc. Solution: Divide by scale factor where appropriate. Change-Id: I21f54b7d2d212a320098fea5c9ae9751e79a0141 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandquickitem.cpp')
-rw-r--r--src/compositor/compositor_api/qwaylandquickitem.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/compositor/compositor_api/qwaylandquickitem.cpp b/src/compositor/compositor_api/qwaylandquickitem.cpp
index d6879dc07..e6844f4c8 100644
--- a/src/compositor/compositor_api/qwaylandquickitem.cpp
+++ b/src/compositor/compositor_api/qwaylandquickitem.cpp
@@ -283,7 +283,7 @@ void QWaylandQuickItem::mousePressEvent(QMouseEvent *event)
if (d->focusOnClick)
takeFocus(inputDevice);
- inputDevice->sendMouseMoveEvent(d->view.data(), event->localPos(), event->windowPos());
+ inputDevice->sendMouseMoveEvent(d->view.data(), event->localPos() / d->scaleFactor(), event->windowPos());
inputDevice->sendMousePressEvent(event->button());
}
@@ -295,7 +295,7 @@ void QWaylandQuickItem::mouseMoveEvent(QMouseEvent *event)
Q_D(QWaylandQuickItem);
if (d->shouldSendInputEvents()) {
QWaylandInputDevice *inputDevice = compositor()->inputDeviceFor(event);
- inputDevice->sendMouseMoveEvent(d->view.data(), event->localPos(), event->windowPos());
+ inputDevice->sendMouseMoveEvent(d->view.data(), event->localPos() / d->scaleFactor(), event->windowPos());
} else {
emit mouseMove(event->windowPos());
event->ignore();
@@ -349,7 +349,7 @@ void QWaylandQuickItem::hoverMoveEvent(QHoverEvent *event)
}
if (d->shouldSendInputEvents()) {
QWaylandInputDevice *inputDevice = compositor()->inputDeviceFor(event);
- inputDevice->sendMouseMoveEvent(d->view.data(), event->pos(), mapToScene(event->pos()));
+ inputDevice->sendMouseMoveEvent(d->view.data(), event->pos() / d->scaleFactor(), mapToScene(event->pos()));
} else {
event->ignore();
}
@@ -683,8 +683,9 @@ void QWaylandQuickItem::setFocusOnClick(bool focus)
*/
bool QWaylandQuickItem::inputRegionContains(const QPointF &localPosition)
{
+ Q_D(QWaylandQuickItem);
if (QWaylandSurface *s = surface())
- return s->inputRegionContains(localPosition.toPoint());
+ return s->inputRegionContains(localPosition.toPoint() / d->scaleFactor());
return false;
}