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;
|
auto *top = m_shell->m_topmostGrabbingPopup;
|
||||||
|
|
||||||
if (top && top->m_xdgSurface != parentXdgSurface) {
|
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;
|
parent = top->m_xdgSurface->m_window;
|
||||||
}
|
}
|
||||||
setPopup(parent);
|
setPopup(parent);
|
||||||
|
@ -414,7 +414,14 @@ void QWaylandXdgSurface::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevic
|
|||||||
auto *top = m_shell->m_topmostGrabbingPopup;
|
auto *top = m_shell->m_topmostGrabbingPopup;
|
||||||
|
|
||||||
if (top && top->m_xdgSurface != parentXdgSurface) {
|
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;
|
parent = top->m_xdgSurface->m_window;
|
||||||
}
|
}
|
||||||
setPopup(parent);
|
setPopup(parent);
|
||||||
|
@ -396,14 +396,9 @@ void QWaylandWindow::setVisible(bool visible)
|
|||||||
// QWaylandShmBackingStore::beginPaint().
|
// QWaylandShmBackingStore::beginPaint().
|
||||||
} else {
|
} else {
|
||||||
sendExposeEvent(QRect());
|
sendExposeEvent(QRect());
|
||||||
// when flushing the event queue, it could contain a close event, in which
|
if (window()->type() == Qt::Popup)
|
||||||
// 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)
|
|
||||||
closePopups(this);
|
closePopups(this);
|
||||||
if (!deleteGuard.isNull())
|
reset();
|
||||||
reset();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user