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()
openSUSE Build Service is sponsored by