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.
This commit is contained in:
Marco Allegretti 2026-05-04 20:24:53 +02:00
parent fe8b798cb2
commit c52e331d31

View file

@ -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();
}
}
}