test: measure rendered progress thumb alignment
This commit is contained in:
@@ -2028,6 +2028,9 @@ private struct PlaybackSlider: NSViewRepresentable {
|
||||
var volume = false
|
||||
var bufferedRange: ClosedRange<Double>?
|
||||
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 }
|
||||
|
||||
Reference in New Issue
Block a user