test: measure rendered progress thumb alignment
This commit is contained in:
@@ -2028,6 +2028,9 @@ private struct PlaybackSlider: NSViewRepresentable {
|
|||||||
var volume = false
|
var volume = false
|
||||||
var bufferedRange: ClosedRange<Double>?
|
var bufferedRange: ClosedRange<Double>?
|
||||||
var intervals: [MiruroInterval] = []
|
var intervals: [MiruroInterval] = []
|
||||||
|
#if PLAYER_CHECK
|
||||||
|
var renderedKnob = NSRect.zero
|
||||||
|
#endif
|
||||||
func visibleKnobRect(_ rect: NSRect) -> NSRect {
|
func visibleKnobRect(_ rect: NSRect) -> NSRect {
|
||||||
let width: CGFloat = volume ? 16 : 3
|
let width: CGFloat = volume ? 16 : 3
|
||||||
let height: CGFloat = volume ? 12 : 15
|
let height: CGFloat = volume ? 12 : 15
|
||||||
@@ -2076,6 +2079,9 @@ private struct PlaybackSlider: NSViewRepresentable {
|
|||||||
}
|
}
|
||||||
override func drawKnob(_ rect: NSRect) {
|
override func drawKnob(_ rect: NSRect) {
|
||||||
let knob = visibleKnobRect(rect)
|
let knob = visibleKnobRect(rect)
|
||||||
|
#if PLAYER_CHECK
|
||||||
|
renderedKnob = knob
|
||||||
|
#endif
|
||||||
let color = isEnabled ? (volume ? SunsetPalette.text : SunsetPalette.secondaryText)
|
let color = isEnabled ? (volume ? SunsetPalette.text : SunsetPalette.secondaryText)
|
||||||
: SunsetPalette.disabledThumb
|
: SunsetPalette.disabledThumb
|
||||||
color.setFill()
|
color.setFill()
|
||||||
@@ -2091,14 +2097,14 @@ func castVolumeSliderFeedbackCheck() -> Bool { PlaybackSlider.Slider.feedbackChe
|
|||||||
func playbackSliderHitCheck() -> Bool {
|
func playbackSliderHitCheck() -> Bool {
|
||||||
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 320, height: 80),
|
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 320, height: 80),
|
||||||
styleMask: [.borderless], backing: .buffered, defer: false)
|
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.cell = PlaybackSlider.Cell()
|
||||||
slider.minValue = 0
|
slider.minValue = 0
|
||||||
slider.maxValue = 100
|
slider.maxValue = 100
|
||||||
slider.isContinuous = true
|
slider.isContinuous = true
|
||||||
window.contentView!.addSubview(slider)
|
window.contentView!.addSubview(slider)
|
||||||
window.display()
|
window.display()
|
||||||
let cell = slider.cell as! NSSliderCell
|
let cell = slider.cell as! PlaybackSlider.Cell
|
||||||
slider.doubleValue = slider.minValue
|
slider.doubleValue = slider.minValue
|
||||||
let left = cell.knobRect(flipped: slider.isFlipped).midX
|
let left = cell.knobRect(flipped: slider.isFlipped).midX
|
||||||
slider.doubleValue = slider.maxValue
|
slider.doubleValue = slider.maxValue
|
||||||
@@ -2126,7 +2132,8 @@ func playbackSliderHitCheck() -> Bool {
|
|||||||
NSApp.postEvent(drag, atStart: true)
|
NSApp.postEvent(drag, atStart: true)
|
||||||
}
|
}
|
||||||
slider.mouseDown(with: down)
|
slider.mouseDown(with: down)
|
||||||
let movedKnob = cell.knobRect(flipped: slider.isFlipped)
|
slider.display()
|
||||||
|
let movedKnob = cell.renderedKnob
|
||||||
let expectedMovement = movement + offset
|
let expectedMovement = movement + offset
|
||||||
let expectedX = min(right, max(left, knob.midX + expectedMovement))
|
let expectedX = min(right, max(left, knob.midX + expectedMovement))
|
||||||
guard abs(movedKnob.midX - expectedX) < 0.5 else { return false }
|
guard abs(movedKnob.midX - expectedX) < 0.5 else { return false }
|
||||||
|
|||||||
Reference in New Issue
Block a user