ui: frost playback titles and hide chrome on pointer exit
This commit is contained in:
@@ -68,11 +68,35 @@ struct SystemPlaybackChecks {
|
||||
require(!model.canPerform(.enterCompact), "empty playback does not enable compact entry")
|
||||
|
||||
model.open(directory.appendingPathComponent("av.mp4"))
|
||||
if !NSWorkspace.shared.isVoiceOverEnabled {
|
||||
model.setPointerInsideWindow(false)
|
||||
require(!model.controlsVisible, "pointer exit hides playback chrome while media is loading")
|
||||
model.setPointerInsideWindow(true)
|
||||
}
|
||||
until("open starts authoritative playback") { model.canTogglePlayback && model.state.status == PLAYER_PLAYING }
|
||||
require(center.playbackState == .playing, "playing publishes macOS playback ownership")
|
||||
require(model.setPlayback(playing: false), "explicit pause accepted")
|
||||
until("pause acknowledged") { model.state.status == PLAYER_PAUSED }
|
||||
let pausedPosition = model.state.position
|
||||
if !NSWorkspace.shared.isVoiceOverEnabled {
|
||||
model.setControlsHovered(true)
|
||||
model.setTitleHovered(true)
|
||||
model.setPointerInsideWindow(false)
|
||||
require(!model.controlsVisible,
|
||||
"pointer exit hides paused playback chrome despite stale hover and inactive window")
|
||||
model.setControlsHovered(false)
|
||||
model.setTitleHovered(false)
|
||||
model.updateWindowState()
|
||||
require(!model.controlsVisible,
|
||||
"late hover/focus updates cannot reshow chrome while the pointer is outside")
|
||||
model.revealControls(forKeyboardNavigation: true)
|
||||
model.revealControls()
|
||||
require(model.controlsVisible, "Tab navigation can reveal controls without moving the pointer")
|
||||
model.setPointerInsideWindow(false)
|
||||
require(!model.controlsVisible, "another pointer exit dismisses keyboard-revealed controls")
|
||||
model.setPointerInsideWindow(true)
|
||||
require(model.controlsVisible, "pointer reentry reveals paused playback chrome")
|
||||
}
|
||||
require(model.setPlayback(playing: false), "repeated pause accepted")
|
||||
until("idempotent pause does not restart playback") {
|
||||
model.state.status == PLAYER_PAUSED && center.playbackState == .paused
|
||||
|
||||
Reference in New Issue
Block a user