Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Ifb1c6c64abbb5c453092eeb1aff91572b57de410
This commit is contained in:
commit
48696dd85e
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user