diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-09-14 12:35:52 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-09-14 12:17:05 +0000 |
commit | f5f06c709937b657c66ca4e35f4e3065ba390153 (patch) | |
tree | 1019883bf566cc7de6d86b9cd2ab4f43b342b26c /src/compositor/compositor_api | |
parent | 2deffa537c82e2f21e01dff5c8f5ba283dd06032 (diff) |
Remove global coordinates
This involves removing:
- pickView and mapView from QWaylandOutput
- requestedPos[X,Y] from QWaylandView
Change-Id: Ie53eef434ac6ae7d0d5474f649f78a59ae857167
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Diffstat (limited to 'src/compositor/compositor_api')
-rw-r--r-- | src/compositor/compositor_api/qwaylandkeyboard.cpp | 2 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandoutput.cpp | 21 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandoutput.h | 3 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandoutputspace.cpp | 22 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandoutputspace.h | 4 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandquickitem.cpp | 10 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandquickitem.h | 6 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandtouch.cpp | 4 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandview.cpp | 45 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandview.h | 13 |
10 files changed, 18 insertions, 112 deletions
diff --git a/src/compositor/compositor_api/qwaylandkeyboard.cpp b/src/compositor/compositor_api/qwaylandkeyboard.cpp index b61dd562a..08fd783ab 100644 --- a/src/compositor/compositor_api/qwaylandkeyboard.cpp +++ b/src/compositor/compositor_api/qwaylandkeyboard.cpp @@ -400,7 +400,7 @@ bool QWaylandKeyboard::setFocus(QWaylandSurface *surface) { Q_D(QWaylandKeyboard); QWaylandShellSurface *shellsurface = QWaylandShellSurface::findIn(surface); - if (shellsurface && shellsurface->isTransientInactive()) + if (shellsurface && shellsurface->focusPolicy() == QWaylandShellSurface::NoKeyboardFocus) return false; d->grab->focused(surface); return true; diff --git a/src/compositor/compositor_api/qwaylandoutput.cpp b/src/compositor/compositor_api/qwaylandoutput.cpp index 2b027cdd4..7c93d2563 100644 --- a/src/compositor/compositor_api/qwaylandoutput.cpp +++ b/src/compositor/compositor_api/qwaylandoutput.cpp @@ -566,27 +566,6 @@ void QWaylandOutput::surfaceLeave(QWaylandSurface *surface) QWaylandSurfacePrivate::get(surface)->send_leave(resourceForClient(surface->client())); } -QWaylandView *QWaylandOutput::pickView(const QPointF &outputPosition) const -{ - Q_D(const QWaylandOutput); - for (int nSurface = 0; nSurface < d->surfaceViews.size(); nSurface++) { - const QWaylandSurface *surface = d->surfaceViews.at(nSurface).surface; - if (surface->isCursorSurface()) - continue; - const QVector<QWaylandView *> views = d->surfaceViews.at(nSurface).views; - for (int nView = 0; nView < views.size(); nView++) { - if (QRectF(views.at(nView)->requestedPosition(), surface->size()).contains(outputPosition)) - return views.at(nView); - } - } - return Q_NULLPTR; -} - -QPointF QWaylandOutput::mapToView(QWaylandView *view, const QPointF &outputPosition) const -{ - return outputPosition - view->requestedPosition(); -} - void QWaylandOutput::setWidth(int newWidth) { Q_D(QWaylandOutput); diff --git a/src/compositor/compositor_api/qwaylandoutput.h b/src/compositor/compositor_api/qwaylandoutput.h index 5f4d9fab2..38f624130 100644 --- a/src/compositor/compositor_api/qwaylandoutput.h +++ b/src/compositor/compositor_api/qwaylandoutput.h @@ -165,9 +165,6 @@ public: virtual void update(); - Q_INVOKABLE virtual QWaylandView *pickView(const QPointF &outputPosition) const; - Q_INVOKABLE virtual QPointF mapToView(QWaylandView *view, const QPointF &surfacePosition) const; - Q_INVOKABLE QPointF mapToOutputSpace(const QPointF &point); Q_SIGNALS: diff --git a/src/compositor/compositor_api/qwaylandoutputspace.cpp b/src/compositor/compositor_api/qwaylandoutputspace.cpp index b5a45cb1e..d17bc7bbf 100644 --- a/src/compositor/compositor_api/qwaylandoutputspace.cpp +++ b/src/compositor/compositor_api/qwaylandoutputspace.cpp @@ -132,26 +132,4 @@ QList<QWaylandOutput *>QWaylandOutputSpace::outputs(const QPoint &point) const return retOutputs; } -QWaylandView *QWaylandOutputSpace::pickView(const QPointF &globalPosition) const -{ - Q_D(const QWaylandOutputSpace); - foreach (QWaylandOutput *output, d->outputs) { - if (!QRectF(output->geometry()).contains(globalPosition)) - continue; - output->pickView(globalPosition); - } - - return 0; -} - -QPointF QWaylandOutputSpace::mapToView(QWaylandView *view, const QPointF &globalPosition) const -{ - return globalPosition - (view->requestedPosition() + view->output()->geometry().topLeft()); -} - -QPointF QWaylandOutputSpace::mapToSpace(QWaylandView *view, const QPointF &local) const -{ - return local + view->requestedPosition() + view->output()->geometry().topLeft(); -} - QT_END_NAMESPACE diff --git a/src/compositor/compositor_api/qwaylandoutputspace.h b/src/compositor/compositor_api/qwaylandoutputspace.h index 8531c2290..5400febb8 100644 --- a/src/compositor/compositor_api/qwaylandoutputspace.h +++ b/src/compositor/compositor_api/qwaylandoutputspace.h @@ -80,10 +80,6 @@ public: Q_INVOKABLE QList<QWaylandOutput *>outputs() const; Q_INVOKABLE QList<QWaylandOutput *>outputs(const QPoint &point) const; - Q_INVOKABLE QWaylandView *pickView(const QPointF &globalPosition) const; - Q_INVOKABLE QPointF mapToView(QWaylandView *view, const QPointF &spacePoint) const; - Q_INVOKABLE QPointF mapToSpace(QWaylandView *view, const QPointF &local) const; - Q_SIGNALS: void geometryConstraintChanged(); void geometryChanged(); diff --git a/src/compositor/compositor_api/qwaylandquickitem.cpp b/src/compositor/compositor_api/qwaylandquickitem.cpp index f0a592927..21d17e77b 100644 --- a/src/compositor/compositor_api/qwaylandquickitem.cpp +++ b/src/compositor/compositor_api/qwaylandquickitem.cpp @@ -194,6 +194,8 @@ QSGTextureProvider *QWaylandQuickItem::textureProvider() const void QWaylandQuickItem::mousePressEvent(QMouseEvent *event) { + m_mousePressPosition = event->windowPos(); + if (!shouldSendInputEvents()) { event->ignore(); return; @@ -218,16 +220,19 @@ void QWaylandQuickItem::mouseMoveEvent(QMouseEvent *event) QWaylandInputDevice *inputDevice = compositor()->inputDeviceFor(event); inputDevice->sendMouseMoveEvent(m_view.data(), event->localPos(), event->windowPos()); } else { + emit mouseMove(event->windowPos()); event->ignore(); } } void QWaylandQuickItem::mouseReleaseEvent(QMouseEvent *event) { + m_mousePressPosition = QPointF(); if (shouldSendInputEvents()) { QWaylandInputDevice *inputDevice = compositor()->inputDeviceFor(event); inputDevice->sendMouseReleaseEvent(event->button()); } else { + emit mouseRelease(); event->ignore(); } } @@ -434,6 +439,11 @@ void QWaylandQuickItem::setFocusOnClick(bool focus) emit focusOnClickChanged(); } +QPointF QWaylandQuickItem::mousePressPosition() const +{ + return m_mousePressPosition; +} + /*! \qmlproperty bool QtWayland::QWaylandSurfaceItem::paintEnabled diff --git a/src/compositor/compositor_api/qwaylandquickitem.h b/src/compositor/compositor_api/qwaylandquickitem.h index 10355df2d..57dd91f0a 100644 --- a/src/compositor/compositor_api/qwaylandquickitem.h +++ b/src/compositor/compositor_api/qwaylandquickitem.h @@ -67,6 +67,7 @@ class Q_COMPOSITOR_EXPORT QWaylandQuickItem : public QQuickItem Q_PROPERTY(bool resizeSurfaceToItem READ resizeSurfaceToItem WRITE setResizeSurfaceToItem NOTIFY resizeSurfaceToItemChanged) Q_PROPERTY(bool inputEventsEnabled READ inputEventsEnabled WRITE setInputEventsEnabled NOTIFY inputEventsEnabledChanged) Q_PROPERTY(bool focusOnClick READ focusOnClick WRITE setFocusOnClick NOTIFY focusOnClickChanged) + Q_PROPERTY(QPointF mousePressPosition READ mousePressPosition) public: QWaylandQuickItem(QQuickItem *parent = 0); @@ -98,6 +99,8 @@ public: bool focusOnClick() const; void setFocusOnClick(bool focus); + QPointF mousePressPosition() const; + protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); @@ -134,6 +137,8 @@ Q_SIGNALS: void surfaceDestroyed(); void inputEventsEnabledChanged(); void focusOnClickChanged(); + void mouseMove(const QPointF &windowPosition); + void mouseRelease(); protected: QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); @@ -157,6 +162,7 @@ private: QQuickWindow *m_connectedWindow; QWaylandSurface::Origin m_origin; + QPointF m_mousePressPosition; }; QT_END_NAMESPACE diff --git a/src/compositor/compositor_api/qwaylandtouch.cpp b/src/compositor/compositor_api/qwaylandtouch.cpp index 61a018b03..e417ab8ea 100644 --- a/src/compositor/compositor_api/qwaylandtouch.cpp +++ b/src/compositor/compositor_api/qwaylandtouch.cpp @@ -200,12 +200,10 @@ void QWaylandTouch::sendFullTouchEvent(QTouchEvent *event) return; const int pointCount = points.count(); - QPointF pos = d->seat->mouseFocus()->requestedPosition(); for (int i = 0; i < pointCount; ++i) { const QTouchEvent::TouchPoint &tp(points.at(i)); // Convert the local pos in the compositor window to surface-relative. - QPointF p = tp.pos() - pos; - sendTouchPointEvent(tp.id(), p, tp.state()); + sendTouchPointEvent(tp.id(), tp.pos(), tp.state()); } sendFrameEvent(); } diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp index ecc337bb4..7f1d3b93d 100644 --- a/src/compositor/compositor_api/qwaylandview.cpp +++ b/src/compositor/compositor_api/qwaylandview.cpp @@ -144,51 +144,6 @@ void QWaylandView::setOutput(QWaylandOutput *newOutput) emit outputChanged(); } -void QWaylandView::setRequestedPosition(const QPointF &pos) -{ - Q_D(QWaylandView); - bool xChanged = !qFuzzyCompare(pos.x(), d->requestedPos.x()); - bool yChanged = !qFuzzyCompare(pos.y(), d->requestedPos.y()); - if (xChanged || yChanged) { - d->requestedPos = pos; - emit requestedPositionChanged(); - } - if (xChanged) - emit requestedXPositionChanged(); - if (yChanged) - emit requestedYPositionChanged(); -} - -QPointF QWaylandView::requestedPosition() const -{ - Q_D(const QWaylandView); - return d->requestedPos; -} - -qreal QWaylandView::requestedXPosition() const -{ - Q_D(const QWaylandView); - return d->requestedPos.x(); -} - -void QWaylandView::setRequestedXPosition(qreal xPos) -{ - Q_D(QWaylandView); - setRequestedPosition(QPointF(xPos, d->requestedPos.y())); -} - -qreal QWaylandView::requestedYPosition() const -{ - Q_D(const QWaylandView); - return d->requestedPos.y(); -} - -void QWaylandView::setRequestedYPosition(qreal yPos) -{ - Q_D(QWaylandView); - setRequestedPosition(QPointF(d->requestedPos.x(), yPos)); -} - void QWaylandView::attach(const QWaylandBufferRef &ref, const QRegion &damage) { Q_D(QWaylandView); diff --git a/src/compositor/compositor_api/qwaylandview.h b/src/compositor/compositor_api/qwaylandview.h index 47d1f9112..7eba0c809 100644 --- a/src/compositor/compositor_api/qwaylandview.h +++ b/src/compositor/compositor_api/qwaylandview.h @@ -56,9 +56,6 @@ class Q_COMPOSITOR_EXPORT QWaylandView : public QObject Q_PROPERTY(QObject *renderObject READ renderObject CONSTANT) Q_PROPERTY(QWaylandSurface *surface READ surface WRITE setSurface NOTIFY surfaceChanged) Q_PROPERTY(QWaylandOutput *output READ output WRITE setOutput NOTIFY outputChanged) - Q_PROPERTY(QPointF requestedPosition READ requestedPosition WRITE setRequestedPosition NOTIFY requestedPositionChanged) - Q_PROPERTY(qreal requestedXPosition READ requestedXPosition WRITE setRequestedXPosition NOTIFY requestedXPositionChanged) - Q_PROPERTY(qreal requestedYPosition READ requestedYPosition WRITE setRequestedYPosition NOTIFY requestedYPositionChanged) Q_PROPERTY(bool bufferLock READ isBufferLocked WRITE setBufferLock NOTIFY bufferLockChanged) public: QWaylandView(QObject *renderObject = 0, QObject *parent = 0); @@ -72,13 +69,6 @@ public: QWaylandOutput *output() const; void setOutput(QWaylandOutput *output); - QPointF requestedPosition() const; - void setRequestedPosition(const QPointF &pos); - qreal requestedXPosition() const; - void setRequestedXPosition(qreal xPos); - qreal requestedYPosition() const; - void setRequestedYPosition(qreal yPos); - virtual void attach(const QWaylandBufferRef &ref, const QRegion &damage); virtual bool advance(); virtual void discardCurrentBuffer(); @@ -94,9 +84,6 @@ Q_SIGNALS: void surfaceChanged(); void surfaceDestroyed(); void outputChanged(); - void requestedPositionChanged(); - void requestedXPositionChanged(); - void requestedYPositionChanged(); void bufferLockChanged(); }; |