From c52e331d31d6fb8c71c39490e50d906da557537a Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Mon, 4 May 2026 20:24:53 +0200 Subject: [PATCH] Auto-clear startup feedback panel fill The coloured rectangle that paints over the bottom panel during an app-launch animation was reset only by a change of WindowMaximizedTracker.showingWindow. In convergence mode kwinrc sets Placement=Centered, so launched apps stay non-maximized, showingWindow never flips and the band remained on the panel indefinitely. Restart a 600 ms safety timer whenever the animation is triggered. When it fires, clear colour and height to zero only if no maximized or fullscreen window exists, preserving the original mobile reset path while fixing the convergence one. --- .../components/StartupFeedbackPanelFill.qml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/components/mobileshell/qml/components/StartupFeedbackPanelFill.qml b/components/mobileshell/qml/components/StartupFeedbackPanelFill.qml index 26e6866a..3e2b1415 100644 --- a/components/mobileshell/qml/components/StartupFeedbackPanelFill.qml +++ b/components/mobileshell/qml/components/StartupFeedbackPanelFill.qml @@ -25,6 +25,29 @@ Rectangle { easing.type: Easing.OutExpo } + // Auto-clear safety net. + // + // The colored fill is normally cleared by onShowingWindowChanged when + // the launched app's maximized state toggles. In convergence mode apps + // launch centered (kwinrc Placement=Centered), so showingWindow may + // never flip to true and the change-based cleanup never fires — the + // band would otherwise remain on the panel indefinitely. + // + // This timer runs after every panel-fill animation and clears the + // rectangle if no maximized/fullscreen window is present, restoring + // the original mobile behaviour while fixing the convergence path. + Timer { + id: autoClearTimer + interval: 600 // animation duration (200) + settle time + repeat: false + onTriggered: { + if (!root.maximizedTracker || !root.maximizedTracker.showingWindow) { + root.color = 'transparent'; + root.height = 0; + } + } + } + // Reset when maximized window state changes Connections { target: maximizedTracker @@ -46,6 +69,7 @@ Rectangle { root.color = color; heightAnim.restart(); + autoClearTimer.restart(); } } }