Merge remote-tracking branch 'origin/5.12' into 5.13

Change-Id: I16bc2e214dda4c8d6c9fc3568af60068815fc558
This commit is contained in:
Qt Forward Merge Bot 2019-04-06 03:03:14 +02:00
commit 27a3fb344a
2 changed files with 12 additions and 4 deletions

View File

@ -71,6 +71,9 @@ QWaylandXdgSurfaceV5 *QWaylandXdgShellV5::createXdgSurface(QWaylandWindow *windo
QWaylandXdgPopupV5 *QWaylandXdgShellV5::createXdgPopup(QWaylandWindow *window, QWaylandInputDevice *inputDevice)
{
QWaylandWindow *parentWindow = m_popups.empty() ? window->transientParent() : m_popups.last();
if (!parentWindow)
return nullptr;
::wl_surface *parentSurface = parentWindow->object();
if (m_popupSerial == 0)

View File

@ -73,10 +73,15 @@ bool QWaylandXdgShellV5Integration::initialize(QWaylandDisplay *display)
QWaylandShellSurface *QWaylandXdgShellV5Integration::createShellSurface(QWaylandWindow *window)
{
QWaylandInputDevice *inputDevice = window->display()->lastInputDevice();
if (window->window()->type() == Qt::WindowType::Popup && inputDevice)
return m_xdgShell->createXdgPopup(window, inputDevice);
else
return m_xdgShell->createXdgSurface(window);
if (window->window()->type() == Qt::WindowType::Popup && inputDevice) {
if (auto *popup = m_xdgShell->createXdgPopup(window, inputDevice))
return popup;
qWarning(lcQpaWayland) << "Failed to create xdg-popup v5 for window" << window->window()
<< "falling back to creating an xdg-surface";
}
return m_xdgShell->createXdgSurface(window);
}
void QWaylandXdgShellV5Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) {