diff options
author | Robin Burchell <robin.burchell@viroteck.net> | 2014-08-20 00:58:45 +0200 |
---|---|---|
committer | Robin Burchell <robin.burchell@viroteck.net> | 2014-08-20 10:10:50 +0200 |
commit | 269edf1de83242b2c60c393c82ade609200ef948 (patch) | |
tree | 872cd69cf042ffb6d5c9ce7fc688b384906df234 /examples | |
parent | 564dd7ca4f1590da5559422e4ea98a2cef1992e6 (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.cpp | 23 |
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); |