From 0e1021feb1a80ffc1c853e8db872624631b888fb Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 20 Sep 2012 14:22:15 +0200 Subject: [PATCH] if is a dock, is on all desktops --- declarativeimports/core/dialog.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/declarativeimports/core/dialog.cpp b/declarativeimports/core/dialog.cpp index 64c465d3a..7a7ae3960 100644 --- a/declarativeimports/core/dialog.cpp +++ b/declarativeimports/core/dialog.cpp @@ -28,6 +28,8 @@ #include #include +#include + #include #include #include @@ -409,6 +411,11 @@ bool DialogProxy::eventFilter(QObject *watched, QEvent *event) } } else if (watched == m_dialog && event->type() == QEvent::Show) { Plasma::WindowEffects::slideWindow(m_dialog, m_location); + if (m_dialog->testAttribute(Qt::WA_X11NetWmWindowTypeDock)) { + KWindowSystem::setOnAllDesktops(m_dialog->winId(), true); + } else { + KWindowSystem::setOnAllDesktops(m_dialog->winId(), false); + } emit visibleChanged(); } else if (watched == m_dialog && event->type() == QEvent::Hide) { Plasma::WindowEffects::slideWindow(m_dialog, m_location); @@ -426,6 +433,12 @@ bool DialogProxy::eventFilter(QObject *watched, QEvent *event) void DialogProxy::setAttribute(int attribute, bool on) { m_dialog->setAttribute((Qt::WidgetAttribute)attribute, on); + + if (attribute == Qt::WA_X11NetWmWindowTypeDock) { + KWindowSystem::setOnAllDesktops(m_dialog->winId(), true); + } else { + KWindowSystem::setOnAllDesktops(m_dialog->winId(), false); + } } #include "dialog.moc"