-
Notifications
You must be signed in to change notification settings - Fork 6.6k
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
[FancyZones] Set correct corner preference when snapping windows on Windows 11 #16542
[FancyZones] Set correct corner preference when snapping windows on Windows 11 #16542
Conversation
Hi @SeraphimaZ I took a swing at seeing if I could recreate the corner preference behavior native snap has on Windows 11. Feel free to alter this PR or use it as inspiration. I'm not a C++ developer, so my skills here are fairly limited 😅 |
@hallatore I added the in progress labels to the issues. |
# Conflicts: # src/modules/fancyzones/FancyZonesLib/util.cpp
|
||
// Set window corner preference on Windows 11 to "Do not round" | ||
auto preference = 1; | ||
DwmSetWindowAttribute(window, 33, &preference, sizeof(preference)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please change magic number 33
to the enum value?
// Placeholder enums since dwmapi.h doesn't have these until SDK 22000. | ||
// Note: Remove once SDK targets 22000 or above. | ||
enum DWMWINDOWATTRIBUTE_CUSTOM | ||
{ | ||
DWMWA_WINDOW_CORNER_PREFERENCE = 33 | ||
}; | ||
|
||
enum DWM_WINDOW_CORNER_PREFERENCE | ||
{ | ||
DWMWCP_DEFAULT = 0, | ||
DWMWCP_DONOTROUND = 1, | ||
DWMWCP_ROUND = 2, | ||
DWMWCP_ROUNDSMALL = 3 | ||
}; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added these @SeraphimaZ. Not sure how to best do this since they are not available in the current sdk.
@check-spelling-bot Report🔴 Please reviewSee the files view or the action log for details. Unrecognized words (4)DONOTROUND Previously acknowledged words that are now absentabap abcd abcdefgh appcontainer atop autogenerates AZCLI azurecr binskim bios Bools btm buildcommand buildtools cameligo CCB cdpxwin cdxml CEBB CFFDAFADA ChaseKnowlden cjs CleanCodeDeveloper cljs CPPARM CPPx crutkas csx CTLCOLORSTATIC defaultcommand Deuchert dupenv DUSTIN efgh errc errorlevel estdir etcore Firefox FIXME fsscript Gamebar graphql Grayscale gsuberland hmon iccex ICONINFORMATION IMonitor INITCOMMONCONTROLSEX INSTALLLOGATTRIBUTES INSTALLLOGMODE INSTALLUILEVEL Javascript julia Knowlden kotlin ktm kts LASTEXITCODE LEQ ligo linkid litcoffee MAINICON MAKELPARAM Minimizeallwindows mkdir moderncop modulekey msiexec MSIINSTALLER MSIL namings NATIVEFNTCTL neq netlify nocache php phps plx policheck popd powerquery psc psm Pui pushd pyc pyd pyi pyo pyz Qin rda rdata rdeveen rds reportbug rexit robocopy scm SETRANGE SETSTEP SHAREIMAGELISTS sizeg smallbasic spamming spdth sregex STEPIT stx svh SWITCHEND symlink symlinks systemverilog taskkill tbc tcl timezone tlbimp trackpad typeparamref UITo umd uninit unittest UWPUI vbhtml verilog vse vsix WDK wdksetup wdkvsix We'd webclient webpack wifstream WINMSAPP WTLTo accept these unrecognized words as correct (and remove the previously acknowledged and now absent words), run the following commands... in a clone of the git@github.com:hallatore/PowerToys.git repository
If the flagged items do not appear to be textIf items relate to a ...
|
Minus spelling adjustments, is there anything else missing here? |
I'm unsure if a windows version check is needed. DwmSetWindowAttribute seems to do nothing if it hits a attribute it doesn't recognize? The changes should have no effect on a Windows 10 PC. Are we fine with these custom enums for now? I guess the alternative is to update the SDK for the whole project? Anything else missing? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested both on Windows10 and Windows11, it does nothing on 10 and works perfectly on 11.
Great work @hallatore and thank you!
One last favor for this PR, please change Note:
to TODO:
in the comment to make it easier to find it later. After that it's good to go :)
@SeraphimaZ Done! :) |
Ready for merge 🥳🎉 |
We'll wait with merging until the hotfix is out (probably next monday). Thank you for this awesome PR |
Thanks a lot for the contribution! |
Summary of the Pull Request
What is this about:
When snapping a window on Windows 11 the app retains the rounded corners. This does not happen when using native Windows 11 snap.
What is included in the PR:
Working example where apps get square borders when snapped and rounded when un-snapped.
How does someone test / validate:
Quality Checklist