fix: separate Cast launch readiness, preserve volume intent and reuse seek inputs

This commit is contained in:
2026-10-13 21:40:19 +02:00
parent 697158aa02
commit b9e63cd760
8 changed files with 365 additions and 55 deletions
+21 -1
View File
@@ -1469,7 +1469,7 @@ private struct PlaybackSlider: NSViewRepresentable {
context.coordinator.parent = self
slider.minValue = range.lowerBound
slider.maxValue = range.upperBound
slider.doubleValue = value
slider.setModelValue(value)
slider.isEnabled = enabled
slider.editingChanged = onEditingChanged
if let cell = slider.cell as? Cell, cell.bufferedRange != bufferedRange {
@@ -1493,6 +1493,21 @@ private struct PlaybackSlider: NSViewRepresentable {
final class Slider: NSSlider {
var editingChanged: (Bool) -> Void = { _ in }
private(set) var tracking = false
func setModelValue(_ value: Double) { if !tracking { doubleValue = value } }
#if PLAYER_CHECK
static func feedbackCheck() -> Bool {
let slider = Slider()
slider.minValue = 0
slider.maxValue = 1
slider.doubleValue = 0.8
slider.tracking = true
slider.setModelValue(0.79)
let heldUserValue = slider.doubleValue == 0.8
slider.tracking = false
slider.setModelValue(0.79)
return heldUserValue && slider.doubleValue == 0.79
}
#endif
override func mouseDown(with event: NSEvent) {
guard isEnabled else { return }
tracking = true
@@ -1538,6 +1553,11 @@ private struct PlaybackSlider: NSViewRepresentable {
}
}
#if PLAYER_CHECK
@MainActor
func castVolumeSliderFeedbackCheck() -> Bool { PlaybackSlider.Slider.feedbackCheck() }
#endif
@MainActor
private struct VideoSurface: NSViewRepresentable {
let view: NSView