fix(ui): finish pending Qt interaction polish
Keep segmented controls within their visual well, use the active theme for playback indicators, disconnect inactive pulse receivers and improve near-fit song metadata. cx
This commit is contained in:
8 files changed
+55
-23
No files matched your search
@@ -206,7 +206,6 @@ Item {
|
||||
// Track info (shared, homologated across the panels, :173-176).
|
||||
ImmersiveTrackMeta {
|
||||
width: root.width
|
||||
equalizerTint: "#7c3aed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,7 +354,6 @@ Item {
|
||||
// fan + metadata read as one balanced group (:276-283).
|
||||
ImmersiveTrackMeta {
|
||||
width: root.width
|
||||
equalizerTint: "#7c3aed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,12 +25,15 @@
|
||||
|
||||
import QtQuick
|
||||
import com.blitzfc.qbz
|
||||
import "../theme"
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
/// Bar color — every immersive mount passes #7c3aed.
|
||||
property color tint: "#7c3aed"
|
||||
QbzTheme { id: theme }
|
||||
|
||||
/// Bar color follows the active theme unless a host deliberately overrides it.
|
||||
property color tint: theme.accent
|
||||
|
||||
width: 18
|
||||
height: 14
|
||||
@@ -43,8 +46,12 @@ Item {
|
||||
// (180 Hz on the owner's panel) and every update is a whole-window
|
||||
// present. The wave's period is 800 ms, so the 30 Hz pulse samples it
|
||||
// ~24 times per loop — indistinguishable. Riding the pulse also means
|
||||
// ZERO extra presents: the bars move in the same frame as everything
|
||||
// else the pulse moves.
|
||||
// ZERO extra clocks: the bars move in the same frame as everything else
|
||||
// the pulse moves. A pulse receiver still has CPU cost, though, so an
|
||||
// inactive indicator disconnects structurally instead of waking a JS
|
||||
// handler just to return. TrackRow also loads this object only for the
|
||||
// one active, visible play cell; a long expanded box set therefore owns
|
||||
// one receiver rather than one receiver per track.
|
||||
//
|
||||
// The `active` gate belongs to the HOST, because this component mounts
|
||||
// in always-alive-but-invisible trees (the immersive overlay) where a
|
||||
@@ -58,10 +65,9 @@ Item {
|
||||
property real t: 0
|
||||
readonly property int _tickMs: 33
|
||||
Connections {
|
||||
target: QbzShell
|
||||
target: root.active && root.visible ? QbzShell : null
|
||||
function onPulseMsChanged() {
|
||||
if (root.active && root.visible)
|
||||
root.t = (root.t + root._tickMs / 800.0) % 1.0
|
||||
root.t = (root.t + root._tickMs / 800.0) % 1.0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,12 +20,15 @@
|
||||
import QtQuick
|
||||
import com.blitzfc.qbz
|
||||
import "../controls"
|
||||
import "../theme"
|
||||
|
||||
Column {
|
||||
id: root
|
||||
|
||||
/// Equalizer tint + "Now Playing" label color (Slint equalizer-tint).
|
||||
property color equalizerTint: "#7c3aed"
|
||||
QbzTheme { id: theme }
|
||||
|
||||
/// Equalizer tint + "Now Playing" label follow the active theme.
|
||||
property color equalizerTint: theme.accent
|
||||
|
||||
spacing: 6
|
||||
|
||||
|
||||
@@ -541,7 +541,6 @@ Item {
|
||||
ImmersiveTrackMeta {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width - 44
|
||||
equalizerTint: "#7c3aed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,6 @@ Item {
|
||||
// Track info (shared, homologated across the panels, :106-109).
|
||||
ImmersiveTrackMeta {
|
||||
width: root.width
|
||||
equalizerTint: "#7c3aed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user