summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@viroteck.net>2014-08-20 00:58:45 +0200
committerRobin Burchell <robin.burchell@viroteck.net>2014-08-20 10:10:50 +0200
commit269edf1de83242b2c60c393c82ade609200ef948 (patch)
tree872cd69cf042ffb6d5c9ce7fc688b384906df234 /examples
parent564dd7ca4f1590da5559422e4ea98a2cef1992e6 (diff)
QWindowCompositor: Getting popups to appear in the right place.
Change-Id: I6ba4731abbf892f8f7bb0a0d5b30bba8082e67be Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/qwindow-compositor/qwindowcompositor.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/examples/qwindow-compositor/qwindowcompositor.cpp b/examples/qwindow-compositor/qwindowcompositor.cpp
index 95541aefb..71fa4f9f6 100644
--- a/examples/qwindow-compositor/qwindowcompositor.cpp
+++ b/examples/qwindow-compositor/qwindowcompositor.cpp
@@ -184,19 +184,26 @@ void QWindowCompositor::surfaceMapped()
QWaylandSurface *surface = qobject_cast<QWaylandSurface *>(sender());
QPoint pos;
if (!m_surfaces.contains(surface)) {
- uint px = 0;
- uint py = 0;
- if (!QCoreApplication::arguments().contains(QLatin1String("-stickytopleft"))) {
- px = 1 + (qrand() % (m_window->width() - surface->size().width() - 2));
- py = 1 + (qrand() % (m_window->height() - surface->size().height() - 2));
+ if (surface->windowType() != QWaylandSurface::Popup) {
+ uint px = 0;
+ uint py = 0;
+ if (!QCoreApplication::arguments().contains(QLatin1String("-stickytopleft"))) {
+ px = 1 + (qrand() % (m_window->width() - surface->size().width() - 2));
+ py = 1 + (qrand() % (m_window->height() - surface->size().height() - 2));
+ }
+ pos = QPoint(px, py);
+ QWaylandSurfaceView *view = surface->views().first();
+ view->setPos(pos);
}
- pos = QPoint(px, py);
- QWaylandSurfaceView *view = surface->views().first();
- view->setPos(pos);
} else {
m_surfaces.removeOne(surface);
}
+ if (surface->windowType() == QWaylandSurface::Popup) {
+ QWaylandSurfaceView *view = surface->views().first();
+ view->setPos(surface->transientParent()->views().first()->pos() + surface->transientOffset());
+ }
+
m_surfaces.append(surface);
defaultInputDevice()->setKeyboardFocus(surface);