mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
feat(ui-scale): re-enable scoped interface scaling
Document-level zoom broke portal positioning and Tauri window measurement,
so the slider had been forced to 100 %. Scope the zoom to a wrapper inside
.main-content instead — sidebar, queue, player bar and the Linux custom
title bar live in sibling grid cells of .app-shell and stay 1:1.
- App.tsx: drop the document-level zoom + auto-reset; wrap main-content
children in <div class="main-content-zoom" style={zoom: uiScale}>.
- layout.css: add .main-content-zoom (flex column, fills parent).
- Settings.tsx: re-enable the slider and snap it to the 6 preset stops
(80/90/100/110/125/150) so the thumb lands directly under each preset
button. Legacy off-preset values snap to the nearest stop on load.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -940,6 +940,20 @@
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* Scoped UI scaling target. Sidebar / queue / player / titlebar live in
|
||||
sibling grid cells of .app-shell and stay at 1:1. The wrapper inherits
|
||||
.main-content's flex column layout so .content-header (fixed height) and
|
||||
.content-body (flex: 1, scroll) keep working unchanged.
|
||||
Zoom is applied via inline style only when uiScale !== 1, so the default
|
||||
case has no extra layer or layout cost. */
|
||||
.main-content-zoom {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.content-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
Reference in New Issue
Block a user