Skip to content

skyline: Made Skyline system-DPI-aware with Start Page and tree scaling - #4602

Draft
rita-gwen wants to merge 5 commits into
masterfrom
Skyline/work/20260820_dpiAwareness
Draft

skyline: Made Skyline system-DPI-aware with Start Page and tree scaling#4602
rita-gwen wants to merge 5 commits into
masterfrom
Skyline/work/20260820_dpiAwareness

Conversation

@rita-gwen

Copy link
Copy Markdown
Contributor

Summary

  • Enables system-DPI awareness (dpiAware manifest + DpiAwareness=SystemAware), so Skyline renders natively at the display scale factor instead of being bitmap-stretched from 96 DPI
  • New DpiUtil establishes the two core idioms: persist window geometry in 96-DPI logical units (backward compatible with existing settings) and pre-scale ImageList icons with bicubic resampling, color key applied before interpolation
  • Start Page pilot: persisted size restored through the logical-units convention; recents rows laid out from font metrics with width-tracking labels
  • Targets/Files tree cluster: DPI-scaled ItemHeight, indent/dash/padding metrics, expander glyphs, and both icon ImageLists
  • 96-DPI behavior is unchanged everywhere (scaling short-circuits at 100%), and functional tests are insulated because the test runner keeps its own DPI-unaware manifest

Progress on #4599 - remaining packages tracked there (smaller owner-drawn controls, persisted geometry for the main window and Library Explorer, DigitalRune dock-layout rescale, higher-resolution icon assets). Full hazard inventory and verification log in pwiz-ai:ai/todos/active/TODO-20260820_dpiAwareness.md.

Test plan

  • TestStartPage* (12 tests) - Start Page behavior at 96 DPI unchanged
  • TestFilesTreeForm, TestMultiSelectPeakAreaGraph - tree drawing incl. multi-select swatches
  • TestLabelLayoutDeterminism - geometry canary, onscreen and offscreen
  • CodeInspection + QuickInspection - zero warnings
  • Visual verification at 125% and 150% (developer-confirmed: crisp dialogs, fixed Start Page recents, tree row spacing/icons/expanders)

Co-Authored-By: Claude noreply@anthropic.com

rita-gwen and others added 2 commits August 20, 2026 18:17
* dpiAware=true in app.manifest; DpiAwareness=SystemAware in app.config
* New DpiUtil: persist window geometry in 96-DPI logical units, scale on restore
* Start Page recents laid out from font metrics with width-tracking labels
* Verified at 150%: dialogs intact; the test runner keeps tests at virtualized 96 DPI

See ai/todos/active/TODO-20260820_dpiAwareness.md

Co-Authored-By: Claude <noreply@anthropic.com>
* TreeViewMS: DPI-scaled ItemHeight, indent/dash/padding metrics, expander glyphs
* SequenceTree and FilesTree icons pre-scaled with bicubic resampling at load
* Color key applied before interpolation so magenta cannot fringe the glyphs
* 96-DPI behavior unchanged (all scaling short-circuits at 100%); verified at 125/150%

See ai/todos/active/TODO-20260820_dpiAwareness.md

Co-Authored-By: Claude <noreply@anthropic.com>
@rita-gwen rita-gwen added the skyline Skyline application changes - create Skyline/work branch label Aug 21, 2026
@rita-gwen

Copy link
Copy Markdown
Contributor Author
image This is the Skyline new look! Quite snazzy, i think.

rita-gwen and others added 3 commits August 21, 2026 12:48
…4599)

* GetFactor reads the screen DC once and caches it; Control.DeviceDpi stays 96 on .NET 4.7.2 system-aware, which had left the earlier scaling inert
* Tree node painting uses explicit-rect DrawImage; DrawImageUnscaled honors DPI metadata and re-inflated pre-scaled icons into overlap
* Pre-scaled bitmaps tagged 96 DPI; main toolbar glyphs bicubic pre-scaled

See ai/todos/active/TODO-20260820_dpiAwareness.md

Co-Authored-By: Claude <noreply@anthropic.com>
* Main window and Library Explorer sizes plus ViewLibrary splitter follow the DpiUtil logical-units convention; locations stay physical with ForceOnScreen
* DigitalRune .view files: floating-window sizes normalized to logical on save, scaled on load; legacy files are logical by definition and round-trip unchanged
* Scaled the floating-window pixel floors (600x440 default, 800 audit log)
* Verified live at 150%: audit log saved as 800x440 logical, restored at 1200x660

See ai/todos/active/TODO-20260820_dpiAwareness.md

Co-Authored-By: Claude <noreply@anthropic.com>
* Scaled runtime-created controls Font autoscale never touches: statement
  completion popup, pick list, transition-list import overlay combos and
  columns, EditListDlg rename popup, KeyValueGridDlg, ActionBoxControl tiles
* Fixed the nested ColorGrid container skipped by form autoscale in both
  hosts (volcano formatting, custom color themes), locale-proof via OnShown
* Added DpiUtil.DrawImageCentered shared by owner-drawn lists and trees,
  and disposal of replaced bitmaps in the DpiUtil image helpers
* Fixed transposed MeasureText args in FilesTree and StatementCompletionTextBox

See TODO-20260820_dpiAwareness.md in pwiz-ai/todos

Co-Authored-By: Claude <noreply@anthropic.com>
@rita-gwen

Copy link
Copy Markdown
Contributor Author

There is one problem with DigitalRune docking windows that we cannot fix ourselves, I'm afraid, unless we have source code for it. In DPI-aware mode the tabstrip text is clipping at the bottom (see the picture) . I is not too bad at 150%, but will be worse at 200%.
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skyline Skyline application changes - create Skyline/work branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant