diff options
author | Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> | 2014-12-31 11:35:53 +0100 |
---|---|---|
committer | Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> | 2015-04-21 14:08:59 +0000 |
commit | d6a9b108f4bc2cf3d6a68a16128796d75f767829 (patch) | |
tree | 9ad29ef3edf4aa7218450ed5f20f12dc9dca3b6e /src/compositor/compositor_api/qwaylandcompositor.cpp | |
parent | 1783179280dda6e470b0a429d4533db544b3c7b2 (diff) |
Move surfaces to outputs
Moving surfaces to belong to a specific output.
Surfaces can be viewed on a different output anyway.
Change-Id: I9ef76300f85190d84b83431374e76e581786e4e7
Done-with: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandcompositor.cpp')
-rw-r--r-- | src/compositor/compositor_api/qwaylandcompositor.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/compositor/compositor_api/qwaylandcompositor.cpp b/src/compositor/compositor_api/qwaylandcompositor.cpp index 0d5d84eb9..28e8f9d4a 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.cpp +++ b/src/compositor/compositor_api/qwaylandcompositor.cpp @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2015 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** @@ -40,6 +41,7 @@ #include "qwaylandcompositor.h" +#include "qwaylandclient.h" #include "qwaylandinput.h" #include "qwaylandoutput.h" #include "qwaylandglobalinterface.h" @@ -175,13 +177,20 @@ void QWaylandCompositor::surfaceAboutToBeDestroyed(QWaylandSurface *surface) QWaylandSurfaceView *QWaylandCompositor::pickView(const QPointF &globalPosition) const { - Q_FOREACH (QtWayland::Surface *surface, m_compositor->surfaces()) { - foreach (QWaylandSurfaceView *view, surface->waylandSurface()->views()) - if (QRectF(view->pos(), surface->size()).contains(globalPosition)) - return view; + Q_FOREACH (QWaylandOutput *output, outputs()) { + // Skip coordinates not in output + if (!QRectF(output->geometry()).contains(globalPosition)) + continue; + + Q_FOREACH (QWaylandSurface *surface, output->surfaces()) { + Q_FOREACH (QWaylandSurfaceView *view, surface->views()) { + if (QRectF(view->pos(), surface->size()).contains(globalPosition)) + return view; + } + } } - return 0; + return Q_NULLPTR; } QPointF QWaylandCompositor::mapToView(QWaylandSurfaceView *surface, const QPointF &globalPosition) const |