diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-07-30 12:05:12 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-08-28 13:09:41 +0200 |
commit | ab6980d57609b1e4bdb164d3413faa2f7cb7e1e4 (patch) | |
tree | ef68f66511347c0545559df6a81b6d56c6448eb4 /src/compositor/compositor_api/qwaylandoutput.cpp | |
parent | e88c2f37097901e228de70c62a0220386038a51a (diff) |
Move the output from QWaylandSurface to the QWaylandSurfaceView
and add a property called primaryOutput on the QWaylandSurface.
Also add some bookkeeping in QtWayland::Output so it knows what surfaces
and views it currently holds, sending the enter and leave events
automatically.
Change-Id: Ib6efbc6f8157657fb4451b751bba1cb5345b7906
Diffstat (limited to 'src/compositor/compositor_api/qwaylandoutput.cpp')
-rw-r--r-- | src/compositor/compositor_api/qwaylandoutput.cpp | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/compositor/compositor_api/qwaylandoutput.cpp b/src/compositor/compositor_api/qwaylandoutput.cpp index 470b5b54b..dffda876e 100644 --- a/src/compositor/compositor_api/qwaylandoutput.cpp +++ b/src/compositor/compositor_api/qwaylandoutput.cpp @@ -35,6 +35,11 @@ ** ****************************************************************************/ +#include "qwaylandoutput.h" + +#include "qwaylandcompositor.h" +#include "qwaylandsurfaceview.h" + #include <QtCore/QCoreApplication> #include <QtCore/QtMath> #include <QtGui/QWindow> @@ -43,9 +48,6 @@ #include "wayland_wrapper/qwlcompositor_p.h" #include "wayland_wrapper/qwloutput_p.h" -#include "qwaylandcompositor.h" -#include "qwaylandoutput.h" -#include "qwaylandsurface.h" QT_BEGIN_NAMESPACE @@ -256,14 +258,9 @@ void QWaylandOutput::frameStarted() d_ptr->frameStarted(); } -void QWaylandOutput::sendFrameCallbacks(QList<QWaylandSurface *> visibleSurfaces) -{ - d_ptr->sendFrameCallbacks(visibleSurfaces); -} - -QList<QWaylandSurface *> QWaylandOutput::surfaces() const +void QWaylandOutput::sendFrameCallbacks() { - return d_ptr->surfaces(); + d_ptr->sendFrameCallbacks(); } QList<QWaylandSurface *> QWaylandOutput::surfacesForClient(QWaylandClient *client) const @@ -271,19 +268,28 @@ QList<QWaylandSurface *> QWaylandOutput::surfacesForClient(QWaylandClient *clien return d_ptr->surfacesForClient(client); } -void QWaylandOutput::addSurface(QWaylandSurface *surface) +QtWayland::Output *QWaylandOutput::handle() const { - d_ptr->addSurface(surface); + return d_ptr.data(); } -void QWaylandOutput::removeSurface(QWaylandSurface *surface) +QWaylandSurfaceView *QWaylandOutput::pickView(const QPointF &outputPosition) const { - d_ptr->removeSurface(surface); + const QVector<QtWayland::SurfaceViewMapper> surfaceViewMappers = d_ptr->surfaceMappers(); + for (int nSurface = 0; surfaceViewMappers.size(); nSurface++) { + const QWaylandSurface *surface = surfaceViewMappers.at(nSurface).surface; + const QVector<QWaylandSurfaceView *> views = surfaceViewMappers.at(nSurface).views; + for (int nView = 0; views.size(); nView++) { + if (QRectF(views.at(nView)->requestedPosition(), surface->size()).contains(outputPosition)) + return views.at(nView); + } + } + return Q_NULLPTR; } -QtWayland::Output *QWaylandOutput::handle() const +QPointF QWaylandOutput::mapToView(QWaylandSurfaceView *view, const QPointF &outputPosition) const { - return d_ptr.data(); + return outputPosition - view->requestedPosition(); } void QWaylandOutput::setWidth(int newWidth) |