Set state in PlasmaCore.Dialog after Qt handled the show event

Qt's xcb plugin updates _NET_WM_STATE and ignores anything we set,
thus we need to ensure that our additional states are set after Qt
set the state. Luckily KWindowSystem does not remove the state which
is already set.

Reviewed-By: Marco Martin
This commit is contained in:
Martin Gräßlin 2014-03-06 13:23:18 +01:00
parent ba91c53c12
commit 3303f9b979

View File

@ -544,7 +544,6 @@ void DialogProxy::focusOutEvent(QFocusEvent *ev)
void DialogProxy::showEvent(QShowEvent *event) void DialogProxy::showEvent(QShowEvent *event)
{ {
KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager);
DialogShadows::self()->addWindow(this, m_frameSvgItem->enabledBorders()); DialogShadows::self()->addWindow(this, m_frameSvgItem->enabledBorders());
QQuickWindow::showEvent(event); QQuickWindow::showEvent(event);
} }
@ -557,7 +556,9 @@ bool DialogProxy::event(QEvent *event)
updateVisibility(false); updateVisibility(false);
} }
return QQuickWindow::event(event); const bool retval = QQuickWindow::event(event);
KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager);
return retval;
} }
void DialogProxy::hideEvent(QHideEvent *event) void DialogProxy::hideEvent(QHideEvent *event)