fix panel pin button layout, network hover, mpris session switch, volume title colors

This commit is contained in:
Damocles 2026-04-16 18:28:50 +02:00
parent c81cddc38f
commit 084ef1da75
4 changed files with 122 additions and 73 deletions

View file

@ -75,7 +75,13 @@ M.BarSection {
required property var bar
property bool _pinned: false
readonly property bool _anyHover: root._hovered || hoverPanel.panelHovered
property bool _switching: false
Timer {
id: _sessionSwitchTimer
interval: 400
onTriggered: root._switching = false
}
readonly property bool _anyHover: root._hovered || hoverPanel.panelHovered || _switching
readonly property bool _showPanel: _anyHover || _pinned
on_AnyHoverChanged: {
@ -355,45 +361,64 @@ M.BarSection {
}
// Player switcher
Row {
anchors.horizontalCenter: parent.horizontalCenter
height: 22
spacing: 6
Item {
width: parent.width
height: _players.length > 1 ? 28 : 0
visible: _players.length > 1
Repeater {
model: root._players
Flickable {
id: _switcher
anchors.centerIn: parent
width: Math.min(_playerRow.implicitWidth, parent.width - 16)
height: 22
contentWidth: _playerRow.implicitWidth
clip: true
delegate: Rectangle {
required property var modelData
required property int index
Row {
id: _playerRow
height: 22
spacing: 6
readonly property bool _active: index === root._playerIdx
Repeater {
model: root._players
width: _pLabel.implicitWidth + 12
height: 18
radius: 9
color: _active ? M.Theme.base02 : (pHover.hovered ? M.Theme.base02 : "transparent")
border.color: _active ? root.accentColor : M.Theme.base03
border.width: _active ? 1 : 0
anchors.verticalCenter: parent.verticalCenter
delegate: Rectangle {
required property var modelData
required property int index
Text {
id: _pLabel
anchors.centerIn: parent
text: modelData.identity ?? "Player"
color: _active ? root.accentColor : M.Theme.base04
font.pixelSize: M.Theme.fontSize - 2
font.family: M.Theme.fontFamily
font.bold: _active
}
readonly property bool _active: index === root._playerIdx
HoverHandler {
id: pHover
cursorShape: Qt.PointingHandCursor
}
width: _pLabel.implicitWidth + 12
height: 18
radius: 9
color: _active ? M.Theme.base02 : (pHover.hovered ? M.Theme.base02 : "transparent")
border.color: _active ? root.accentColor : M.Theme.base03
border.width: _active ? 1 : 0
anchors.verticalCenter: parent.verticalCenter
TapHandler {
onTapped: root._playerIdx = index
Text {
id: _pLabel
anchors.centerIn: parent
text: modelData.identity ?? "Player"
color: _active ? root.accentColor : M.Theme.base04
font.pixelSize: M.Theme.fontSize - 2
font.family: M.Theme.fontFamily
font.bold: _active
}
HoverHandler {
id: pHover
cursorShape: Qt.PointingHandCursor
}
TapHandler {
onTapped: {
root._playerIdx = index;
root._switching = true;
_sessionSwitchTimer.restart();
}
}
}
}
}
}