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

Change-Id: Ifb1c6c64abbb5c453092eeb1aff91572b57de410
This commit is contained in:
Qt Forward Merge Bot 2019-02-16 03:01:33 +01:00
commit 48696dd85e
3 changed files with 18 additions and 9 deletions

View File

@ -380,7 +380,14 @@ void QWaylandXdgSurfaceV6::setGrabPopup(QWaylandWindow *parent, QWaylandInputDev
auto *top = m_shell->m_topmostGrabbingPopup;
if (top && top->m_xdgSurface != parentXdgSurface) {
qCWarning(lcQpaWayland) << "setGrabPopup called for a surface that was not the topmost popup, positions might be off.";
qCWarning(lcQpaWayland) << "setGrabPopup called with a parent," << parentXdgSurface
<< "which does not match the current topmost grabbing popup,"
<< top->m_xdgSurface << "According to the xdg-shell-v6 protocol, this"
<< "is not allowed. The wayland QPA plugin is currently handling"
<< "it by setting the parent to the topmost grabbing popup."
<< "Note, however, that this may cause positioning errors and"
<< "popups closing unxpectedly because xdg-shell-v6 mandate that child"
<< "popups close before parents";
parent = top->m_xdgSurface->m_window;
}
setPopup(parent);

View File

@ -414,7 +414,14 @@ void QWaylandXdgSurface::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevic
auto *top = m_shell->m_topmostGrabbingPopup;
if (top && top->m_xdgSurface != parentXdgSurface) {
qCWarning(lcQpaWayland) << "setGrabPopup called for a surface that was not the topmost popup, positions might be off.";
qCWarning(lcQpaWayland) << "setGrabPopup called with a parent," << parentXdgSurface
<< "which does not match the current topmost grabbing popup,"
<< top->m_xdgSurface << "According to the xdg-shell protocol, this"
<< "is not allowed. The wayland QPA plugin is currently handling"
<< "it by setting the parent to the topmost grabbing popup."
<< "Note, however, that this may cause positioning errors and"
<< "popups closing unxpectedly because xdg-shell mandate that child"
<< "popups close before parents";
parent = top->m_xdgSurface->m_window;
}
setPopup(parent);

View File

@ -396,13 +396,8 @@ void QWaylandWindow::setVisible(bool visible)
// QWaylandShmBackingStore::beginPaint().
} else {
sendExposeEvent(QRect());
// when flushing the event queue, it could contain a close event, in which
// case 'this' will be deleted. When that happens, we must abort right away.
QPointer<QWaylandWindow> deleteGuard(this);
QWindowSystemInterface::flushWindowSystemEvents();
if (!deleteGuard.isNull() && window()->type() == Qt::Popup)
if (window()->type() == Qt::Popup)
closePopups(this);
if (!deleteGuard.isNull())
reset();
}
}