File plasma-workspace-windows-can-cover.patch of Package plasma6-workspace
diff --git a/shell/autohidescreenedge.cpp b/shell/autohidescreenedge.cpp
index 9f0f15bc44..17375c2584 100644
--- a/shell/autohidescreenedge.cpp
+++ b/shell/autohidescreenedge.cpp
@@ -248,6 +248,8 @@ void X11AutoHideScreenEdge::activate()
break;
}
+ value |= 256;
+
xcb_change_property(qGuiApp->nativeInterface<QNativeInterface::QX11Application>()->connection(),
XCB_PROP_MODE_REPLACE,
m_view->winId(),
diff --git a/shell/panelconfigview.cpp b/shell/panelconfigview.cpp
index 5eb3ed9608..47c7894d82 100644
--- a/shell/panelconfigview.cpp
+++ b/shell/panelconfigview.cpp
@@ -106,8 +106,8 @@ void PanelRulerView::syncPanelLocation()
if (KWindowSystem::isPlatformX11()) {
#if HAVE_X11
- KX11Extras::setType(winId(), NET::Dock);
- KX11Extras::setState(winId(), NET::KeepAbove);
+ KX11Extras::setType(winId(), NET::Normal);
+ KX11Extras::setState(winId(), NET::KeepBelow);
switch (m_containment->location()) {
case Plasma::Types::TopEdge:
setPosition(available.topLeft() + screen()->geometry().topLeft());
diff --git a/shell/panelview.cpp b/shell/panelview.cpp
index ab96f80129..a1f4cc7750 100644
--- a/shell/panelview.cpp
+++ b/shell/panelview.cpp
@@ -512,6 +512,7 @@ KSvg::FrameSvg::EnabledBorders PanelView::enabledBorders() const
void PanelView::setVisibilityMode(PanelView::VisibilityMode mode)
{
+ connect(containment(), &Plasma::Applet::activated, this, &PanelView::showTemporarily);
if (m_visibilityMode == mode) {
return;
}
@@ -1011,7 +1012,7 @@ void PanelView::positionConfigView()
void PanelView::restoreAutoHide()
{
- bool autoHide = true;
+ bool autoHide = false;
disconnect(m_transientWindowVisibleWatcher);
if (!edgeActivated()) {
@@ -1117,9 +1118,9 @@ void PanelView::integrateScreen()
#if HAVE_X11
if (KWindowSystem::isPlatformX11()) {
KX11Extras::setOnAllDesktops(winId(), true);
- KX11Extras::setType(winId(), NET::Dock);
+ KX11Extras::setType(winId(), NET::Normal);
if (auto xcbWindow = nativeInterface<QNativeInterface::Private::QXcbWindow>()) {
- xcbWindow->setWindowType(QNativeInterface::Private::QXcbWindow::Dock);
+ xcbWindow->setWindowType(QNativeInterface::Private::QXcbWindow::Normal);
}
}
#endif
@@ -1226,6 +1227,7 @@ bool PanelView::event(QEvent *e)
case QEvent::Enter:
m_containsMouse = true;
if (edgeActivated()) {
+ KX11Extras::setState(winId(), NET::KeepAbove);
m_unhideTimer.stop();
}
break;
@@ -1233,6 +1235,7 @@ bool PanelView::event(QEvent *e)
case QEvent::Leave:
m_containsMouse = false;
if (edgeActivated()) {
+ KX11Extras::clearState(winId(), NET::KeepAbove);
m_unhideTimer.start();
}
break;
@@ -1824,6 +1827,7 @@ void PanelView::refreshStatus(Plasma::Types::ItemStatus status)
void PanelView::showTemporarily()
{
setAutoHideEnabled(false);
+ KX11Extras::setState(winId(), NET::KeepAbove);
auto *t = new QTimer(this);
t->setSingleShot(true);
@@ -1854,7 +1858,7 @@ void PanelView::screenDestroyed(QObject *)
bool PanelView::edgeActivated() const
{
- return m_visibilityMode == PanelView::AutoHide || m_visibilityMode == PanelView::DodgeWindows;
+ return true || m_visibilityMode == PanelView::AutoHide || m_visibilityMode == PanelView::DodgeWindows;
}
void PanelView::updateEnabledBorders()