Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Off-by-one (pixel) bug #795

Open
david-delaune opened this issue Apr 11, 2024 · 7 comments
Open

Off-by-one (pixel) bug #795

david-delaune opened this issue Apr 11, 2024 · 7 comments

Comments

@david-delaune
Copy link

I was previously using the older Release version. I wanted to use the new auto-hide feature for the menu bar. So I pulled the the latest source and compiled it. After installing it, I noticed that I couldn't seem to open the task bar when it was hidden. Came very close to uninstalling it but I decided to debug a little. I used \Enterprise\Common7\Tools\spyxx.exe to debug the window.

(0, 2081)-(3840, 2159) 3840x78

Note the 2159 pixel offset on the Y axis that correlates to the bottom of the taskbar, I'm using a 4k monitor here on my workstation. That number should be 2160. When I pull my mouse to the bottom of my screen there is a 1 pixel gap and that's what was causing it.

Interestingly only the 4k monitor has this problem. I have three monitors, Large 4k in the middle with two smaller monitors (1920x1080) on left and right. Only the center 4k monitor had this pixel gap.

I fixed it by adding 1 pixel to the getDesiredTopPosition() function. But I'm pretty sure that's not the correct fix. I didn't want to invest anymore time looking into it. If I have more time this weekend I'll investigate further. I am suspecting DPI scaling and the GetAppBarEdgeWindowsHeight function, (I see it uses floats), but don't have time to look into it this week. Maybe this weekend.

Also, the Release version does not have this pixel gap.

Windows 10.0.20348.2402
master@#791
x64
Full Shell replacement

@dremin
Copy link
Collaborator

dremin commented Apr 11, 2024

Which DPI scaling setting are you using on the 4k monitor?

@david-delaune
Copy link
Author

DPI scaling is set to 175 on the 4k monitor.

@dremin
Copy link
Collaborator

dremin commented Apr 22, 2024

Would you be willing to test a custom build to see if this is caused by what I suspect (incorrect rounding)? If so, do you need a 32bit, 64bit, or ARM64 build?

@dremin
Copy link
Collaborator

dremin commented Apr 23, 2024

Here is a 64-bit build to try:
CairoSetup_64bit.zip

@david-delaune
Copy link
Author

It would actually be much more convenient for me if you posted a diff so I could test with that.

I apologize for not getting back with you. I did look into the bug last weekend but when I opened the ManagedShell project I realized that I could fix all the little issues that annoyed me. I got distracted and added/removed a bunch of features for myself throughout the entire evening until bedtime.

I guess the most notable would be a 250ms delay to the Menu bar. It's nearly impossible to close/minimize a window without opening the menu bar. Took a different approach from how I think you would have implemented it. I added a new "MouseInitiatedAutoHide" property and a SetAutoHideStateFromMouse() setter function called from AppBarWindow_MouseEnter(). Then in the property-changed handler launched an asynchronous function to wait 250 milliseconds and check if the mouse is still located on the screen boundary.

Anyway, I'm yammering. Could you put up a diff?

@dremin
Copy link
Collaborator

dremin commented Apr 23, 2024

Here are the ManagedShell changes: cairoshell/ManagedShell@master...metric-rounding
Here are the Cairo changes: master...remove-top-hack

Regarding what you mentioned adding a delay to the menu bar: This should already exist in Cairo; there is an "auto-hide show delay" setting in Cairo Settings > Advanced. Or am I misunderstanding the change?

@dremin
Copy link
Collaborator

dremin commented May 6, 2024

As of #802, this should now be fixed.

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

No branches or pull requests

2 participants