diff --git a/Sources/App/TerebiApp.swift b/Sources/App/TerebiApp.swift index 697bbbd..38beeca 100644 --- a/Sources/App/TerebiApp.swift +++ b/Sources/App/TerebiApp.swift @@ -2028,6 +2028,9 @@ private struct PlaybackSlider: NSViewRepresentable { var volume = false var bufferedRange: ClosedRange? var intervals: [MiruroInterval] = [] + #if PLAYER_CHECK + var renderedKnob = NSRect.zero + #endif func visibleKnobRect(_ rect: NSRect) -> NSRect { let width: CGFloat = volume ? 16 : 3 let height: CGFloat = volume ? 12 : 15 @@ -2076,6 +2079,9 @@ private struct PlaybackSlider: NSViewRepresentable { } override func drawKnob(_ rect: NSRect) { let knob = visibleKnobRect(rect) + #if PLAYER_CHECK + renderedKnob = knob + #endif let color = isEnabled ? (volume ? SunsetPalette.text : SunsetPalette.secondaryText) : SunsetPalette.disabledThumb color.setFill() @@ -2091,14 +2097,14 @@ func castVolumeSliderFeedbackCheck() -> Bool { PlaybackSlider.Slider.feedbackChe func playbackSliderHitCheck() -> Bool { let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 320, height: 80), styleMask: [.borderless], backing: .buffered, defer: false) - let slider = PlaybackSlider.Slider(frame: NSRect(x: 20, y: 20, width: 280, height: 24)) + let slider = PlaybackSlider.Slider(frame: NSRect(x: 20, y: 20, width: 280, height: 14)) slider.cell = PlaybackSlider.Cell() slider.minValue = 0 slider.maxValue = 100 slider.isContinuous = true window.contentView!.addSubview(slider) window.display() - let cell = slider.cell as! NSSliderCell + let cell = slider.cell as! PlaybackSlider.Cell slider.doubleValue = slider.minValue let left = cell.knobRect(flipped: slider.isFlipped).midX slider.doubleValue = slider.maxValue @@ -2126,7 +2132,8 @@ func playbackSliderHitCheck() -> Bool { NSApp.postEvent(drag, atStart: true) } slider.mouseDown(with: down) - let movedKnob = cell.knobRect(flipped: slider.isFlipped) + slider.display() + let movedKnob = cell.renderedKnob let expectedMovement = movement + offset let expectedX = min(right, max(left, knob.midX + expectedMovement)) guard abs(movedKnob.midX - expectedX) < 0.5 else { return false }