Bug 488034

Summary: Spectacle toolbar shows wrong pixel size during region selection (Wayland fractional scaling)
Product: [Applications] Spectacle Reporter: Andrea Ippolito <andrea.ippo>
Component: GeneralAssignee: Noah Davis <noahadvs>
Status: REPORTED ---    
Severity: normal CC: ato300, kde, pavel23dob
Priority: NOR    
Version: 24.05.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Shows the wrong pixel values for various global scale %

Description Andrea Ippolito 2024-06-04 18:44:49 UTC
Spectacle's toolbar while capturing a screenshot via the region selection feature shows a wrong pixel size for the selected area.

STEPS TO REPRODUCE

Internal display is enough to reproduce this one.

My laptop's display has a resolution of 2256x1504, but I scale it at 125% (setting a scale factor is crucial to reproduce)

Launch spectacle and choose the region screenshot feature. Now drag a rectangle and check the pixel size the toolbar shows for the selected area: it is probably much higher than the actual pixel count. To prove this, you can just draw a rectangle from the top left to the bottom right corner of the screen, and you will see an exaggerated pixel size for it. In my case at 125% it says "3609x2405" (which isn't even native resolution * 1.25, by quite a margin).

The captured image has the correct resolution, though (2256x1504).
Comment 1 Andrea Ippolito 2024-06-04 19:13:25 UTC
Working fine of course at 100%, but also at 200%.
Comment 2 ato300 2024-12-14 13:30:24 UTC
Created attachment 176600 [details]
Shows the wrong pixel values for various global scale %

I can reproduce this on Kubuntu 24.10 (Plasma 6.1.5, Frameworks 6.6.0, Qt 6.6.2), Wayland, on a 2K monitor (2560x1440).

I tested various global scale percentages and I believe I found the "formula" of the error.

On 100%, 200%, 300% pixels are reported correctly. 

In the attached table, I've shown the reported pixels when I select the rectangular region to be as large as possible (i.e. to encompass the whole screen) and I compared that with the expected resolution. Small rounding errors are possible.

So for the fractional global scale values it seems that the number of pixels displayed is A times larger than expected, where A is computed as:

A = CEIL(GlobalScale) / GlobalScale
Comment 3 ato300 2024-12-14 13:44:03 UTC
*** Bug 491991 has been marked as a duplicate of this bug. ***