summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandoutput.cpp
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@theqtcompany.com>2015-07-30 12:05:12 +0200
committerJørgen Lind <jorgen.lind@theqtcompany.com>2015-08-28 13:09:41 +0200
commitab6980d57609b1e4bdb164d3413faa2f7cb7e1e4 (patch)
treeef68f66511347c0545559df6a81b6d56c6448eb4 /src/compositor/compositor_api/qwaylandoutput.cpp
parente88c2f37097901e228de70c62a0220386038a51a (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.cpp38
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)