WDD Version: main at 965e009 (this is not in the 5.7.0 release — see below)
- OS Version: Windows 11 Pro 26220, display at 125% scaling
Steps to Reproduce:
- Set display scaling to 125% (or anything above 100%).
- Open the theme dialog and select any theme.
- Click the right chevron in the preview. Nothing happens.
- Click empty image area roughly 20% of the pane width to the left of that chevron. The preview advances.
The play/pause button is offset the same way, and arrow clicks in the bottom ~20% of the pane do nothing. The left chevron still works, which is what makes it look like only the right one is broken.
Cause
ThemePreviewer.OnPaintSurface scales the canvas by uiScale and passes DrawOverlay an SKImageInfo already divided by that factor, so every hit region the renderer stores — LeftArrowRect, RightArrowRect, PlayButtonRect, DownloadMessageRect, CarouselIndicatorRects — is in scaled coordinates. OnMouseClick and OnMouseMove test them against e.Location, which is in device pixels, so at 125% every region sits 20% toward the top left of where it was drawn.
For a pane of width W at 125%:
- The right chevron is drawn at
W - 50, but RightArrowRect spans [0.8W - 80, 0.8W].
- The left chevron is drawn at
50 and LeftArrowRect spans [0, 80], so it still overlaps and keeps working.
This has not shipped
v5.7.0 does not contain the bug — v5.7.0:src/Skia/ThemePreviewer.cs has no uiScale, canvas.Scale, or logicalInfo, so the overlay was drawn unscaled and the regions matched the mouse coordinates.
The scaling was added in 86eccca ("Fix small text in theme preview for high DPI", 2026-07-07), three weeks after the 5.7.0 tag, and the hit testing was not updated to match. So this affects anyone running main and would ship with the next release.
Fix
One-line-per-handler change: convert the mouse position into the same scaled space before hit testing, which repairs the arrows, the play/pause button, the download link and the carousel indicators together. PR to follow.
WDD Version:
mainat 965e009 (this is not in the 5.7.0 release — see below)Steps to Reproduce:
The play/pause button is offset the same way, and arrow clicks in the bottom ~20% of the pane do nothing. The left chevron still works, which is what makes it look like only the right one is broken.
Cause
ThemePreviewer.OnPaintSurfacescales the canvas byuiScaleand passesDrawOverlayanSKImageInfoalready divided by that factor, so every hit region the renderer stores —LeftArrowRect,RightArrowRect,PlayButtonRect,DownloadMessageRect,CarouselIndicatorRects— is in scaled coordinates.OnMouseClickandOnMouseMovetest them againste.Location, which is in device pixels, so at 125% every region sits 20% toward the top left of where it was drawn.For a pane of width
Wat 125%:W - 50, butRightArrowRectspans[0.8W - 80, 0.8W].50andLeftArrowRectspans[0, 80], so it still overlaps and keeps working.This has not shipped
v5.7.0does not contain the bug —v5.7.0:src/Skia/ThemePreviewer.cshas nouiScale,canvas.Scale, orlogicalInfo, so the overlay was drawn unscaled and the regions matched the mouse coordinates.The scaling was added in 86eccca ("Fix small text in theme preview for high DPI", 2026-07-07), three weeks after the 5.7.0 tag, and the hit testing was not updated to match. So this affects anyone running
mainand would ship with the next release.Fix
One-line-per-handler change: convert the mouse position into the same scaled space before hit testing, which repairs the arrows, the play/pause button, the download link and the carousel indicators together. PR to follow.