Pass TRANSIENT_INACTIVE flag for windows with WA_ShowWithoutActivating
When setting a transient window also evaluate the state of the window attribute WA_ShowWithoutActivating. If that flag is set the transient should get the inactive flag as well. Task-number: QTBUG-55403 Change-Id: I757e5527e78f730a440e26abb52e84c9b2bb2f3a Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
This commit is contained in:
parent
895b46e394
commit
f6417bd744
@ -151,6 +151,13 @@ void QWaylandWlShellSurface::setTopLevel()
|
|||||||
set_toplevel();
|
set_toplevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool testShowWithoutActivating(const QWindow *window)
|
||||||
|
{
|
||||||
|
// QWidget-attribute Qt::WA_ShowWithoutActivating.
|
||||||
|
const QVariant showWithoutActivating = window->property("_q_showWithoutActivating");
|
||||||
|
return showWithoutActivating.isValid() && showWithoutActivating.toBool();
|
||||||
|
}
|
||||||
|
|
||||||
void QWaylandWlShellSurface::updateTransientParent(QWindow *parent)
|
void QWaylandWlShellSurface::updateTransientParent(QWindow *parent)
|
||||||
{
|
{
|
||||||
QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle());
|
QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle());
|
||||||
@ -168,7 +175,8 @@ void QWaylandWlShellSurface::updateTransientParent(QWindow *parent)
|
|||||||
uint32_t flags = 0;
|
uint32_t flags = 0;
|
||||||
Qt::WindowFlags wf = m_window->window()->flags();
|
Qt::WindowFlags wf = m_window->window()->flags();
|
||||||
if (wf.testFlag(Qt::ToolTip)
|
if (wf.testFlag(Qt::ToolTip)
|
||||||
|| wf.testFlag(Qt::WindowTransparentForInput))
|
|| wf.testFlag(Qt::WindowTransparentForInput)
|
||||||
|
|| testShowWithoutActivating(m_window->window()))
|
||||||
flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE;
|
flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE;
|
||||||
|
|
||||||
set_transient(parent_wayland_window->object(),
|
set_transient(parent_wayland_window->object(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user