feat(player): add option to dock lyrics & queue as a side drawer#394
Open
WGlegola wants to merge 1 commit into
Open
feat(player): add option to dock lyrics & queue as a side drawer#394WGlegola wants to merge 1 commit into
WGlegola wants to merge 1 commit into
Conversation
Adds a General → Behavior setting, "Open lyrics & queue as a side drawer", that docks the lyrics and queue panels as a right-hand column pushing the content aside — like the left sidebar — instead of floating over it as a glass overlay. Default off, so existing floating behavior is unchanged. - SettingsManager: lyricsQueueDrawerEnabled (persisted, default false). - GeneralSettingsView: the toggle in the Behavior section. - MainWindow: a single stable HStack keeps the NavigationSplitView identity across the toggle; drawer mode docks rightDrawerColumn as a sibling column, floating mode keeps the trailing overlay. The drawer's material extends behind the transparent titlebar (full height like the sidebar) while its content stays below it, so the Up Next Clear/Edit controls remain out of the window-drag strip. - LyricsView / QueueView / QueueSidePanelView / SimpleLyricsView: a docked flag renders flush content (no fixed-width glass/material card); the drawer container supplies the background. Queue uses regular material so NSTableView drag-and-drop keeps working. - QueueSidePanelView: the docked side-panel column uses a deterministic width (container width minus a scroller gutter) so rows don't clip on the right edge. - MainWindowLayout: rightDrawerWidth.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a General → Behavior setting, "Open lyrics & queue as a side drawer", that docks the lyrics and queue panels as a right-hand column which pushes the content aside — like the left sidebar — instead of floating over it as a glass overlay.
The setting is off by default, so the existing floating behavior is unchanged for anyone who doesn't opt in.
Motivation
The lyrics/queue panels currently appear as a floating glass "popup" on the trailing edge. Some users prefer a docked drawer (matching the left sidebar) that reserves its own space and lets the main content reflow beside it, rather than overlaying it.
What changed
SettingsManager— new persistedlyricsQueueDrawerEnabledflag (defaultfalse).GeneralSettingsView— the toggle in the Behavior section.MainWindow—mainContentis a single stableHStackso theNavigationSplitViewkeeps its identity when the setting toggles (a naive branch swap rebuilt it and reset scroll). Floating mode keeps the trailing overlay; drawer mode docksrightDrawerColumnas a sibling column. The drawer's material extends up behind the transparent titlebar so it reads full-height like the sidebar, while its content stays within the safe area so the Up Next Clear/Edit controls remain out of the window-drag strip and stay clickable. The AI/command-bar button remains a standard toolbar item.LyricsView/QueueView/QueueSidePanelView/SimpleLyricsView— adockedflag renders flush content (no fixed-width glass/material card); the drawer container supplies the background. The queue uses regular material rather than glass soNSTableViewdrag-and-drop keeps working.QueueSidePanelView— the docked side-panel table column is sized deterministically (container width minus a scroller gutter) so rows don't clip on the right edge in the narrower drawer.MainWindowLayout—rightDrawerWidthconstant.Behavior
Toggle it under Settings → General → Behavior.
Screenshots
Testing
swift build,swiftlint --strict, andswiftformatclean.swift test --skip KasetUITests— full suite passes (2285 tests).Notes