Skip to content

HiDPI audit, second wave: 62 widgets, six more that were not scaling - #211

Merged
tannevaled merged 1 commit into
mainfrom
feat/hidpi-audit-wave2
Aug 16, 2026
Merged

HiDPI audit, second wave: 62 widgets, six more that were not scaling#211
tannevaled merged 1 commit into
mainfrom
feat/hidpi-audit-wave2

Conversation

@tannevaled

Copy link
Copy Markdown
Contributor

The catalogue goes from 18 to 62 of the toolkit's ~125 drawable widgets. Every name added either passes or names its own defect — which is the point of having built the instrument in #208 rather than reading a hundred files and guessing which numbers are pixels.

Six named one:

widget what stayed put on a 2× screen
Dialog the title bar and button strip — fixed pixel heights, so the chrome sat at half its size around content that had grown
RadioButton the circle. CheckButton's box was fixed last wave; this is its sibling, with the same 12
Scale the groove — a four-device-pixel track under a thumb that doubled reads as a thread
Paned the splitter's edge hairlines and its three grip dots, one device pixel each
DropZone the dashed border: dash length, gap and inset
ProgressCircle the ring's diameter and stroke

Two left out, with the measurement rather than a shrug

Scale's horizontal thumb and ColorChooser come out off by two device pixels at twice the scale — 12 becoming 26 where 24 was due, not 12 staying 12. That is a scaled metric composed with an unscaled one-pixel something: a different class from the one this audit catches, and finding it needs reading their Draw rather than widening a tolerance that would then hide the real class. Written into the test file next to the catalogue so it is not lost, and they go back in when they are right.

🤖 Generated with Claude Code

The catalogue goes from 18 to 62 of the toolkit's ~125 drawable widgets. Every
name added either passes or names its own defect, which is the whole point of
having built the instrument rather than reading a hundred files.

Six named one:

  - Dialog: the title bar and button strip were fixed pixel heights, so at twice
    the scale the chrome sat at half its size around content that had grown.
  - RadioButton: the circle. CheckButton's box was fixed last wave; this is its
    sibling and had the same 12.
  - Scale: the groove. A four-device-pixel track under a thumb that doubled
    reads as a thread.
  - Paned: the splitter's edge hairlines and its three grip dots -- one device
    pixel each, invisible on the screens this is for.
  - DropZone: the dashed border, its dash length, gap and inset.
  - ProgressCircle: the ring's diameter and stroke.

Left out, with the measurement rather than a shrug: Scale's horizontal thumb and
ColorChooser come out off by TWO device pixels at twice the scale -- 12 becoming
26 where 24 was due, not 12 staying 12. That is a scaled metric composed with an
unscaled one-pixel something, a different class from the one this catches, and
finding it needs reading their Draw rather than widening a tolerance that would
then hide the real class.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@tannevaled
tannevaled merged commit acc683e into main Aug 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant