perf: replace always-on bargroup shadow with hover-only glow

the MultiEffect shadow on every BarGroup was causing 8+ offscreen FBO
renders on every bar redraw. now only activates on hover.
This commit is contained in:
Damocles 2026-04-15 23:41:33 +02:00
parent 54f80f0da8
commit b5e0f47b80

View file

@ -31,29 +31,10 @@ Item {
implicitHeight: M.Theme.barHeight - 3 - _pad implicitHeight: M.Theme.barHeight - 3 - _pad
readonly property int _pad: 6 readonly property int _pad: 6
property bool _hovered: false
// Shadow source rendered offscreen, only its glow is visible HoverHandler {
Rectangle { onHoveredChanged: root._hovered = hovered
id: shadowSource
anchors.fill: parent
color: "transparent"
border.color: root.borderColor
border.width: 1
topLeftRadius: root._tlr
topRightRadius: root._trr
bottomLeftRadius: root._blr
bottomRightRadius: root._brr
visible: false
}
MultiEffect {
source: shadowSource
anchors.fill: shadowSource
shadowEnabled: true
shadowColor: root.borderColor
shadowBlur: 1.0
shadowVerticalOffset: 0
shadowHorizontalOffset: 0
} }
// Frosted base semi-transparent so the bar background bleeds through // Frosted base semi-transparent so the bar background bleeds through
@ -104,7 +85,7 @@ Item {
} }
} }
// Visible border // Visible border glow on hover only
Rectangle { Rectangle {
anchors.fill: parent anchors.fill: parent
color: "transparent" color: "transparent"
@ -114,6 +95,15 @@ Item {
topRightRadius: root._trr topRightRadius: root._trr
bottomLeftRadius: root._blr bottomLeftRadius: root._blr
bottomRightRadius: root._brr bottomRightRadius: root._brr
layer.enabled: root._hovered
layer.effect: MultiEffect {
shadowEnabled: true
shadowColor: root.borderColor
shadowBlur: 1.0
shadowVerticalOffset: 0
shadowHorizontalOffset: 0
}
} }
Row { Row {