Skip to content

Commit 5466ab6

Browse files
mikehall-msvanzue
andcommitted
CursorWrap improvements (#44936)
## Summary of the Pull Request - Updated engine for better multi-monitor support. - Closing the laptop lid will now update the monitor topology - New settings/dropdown to support wrapping on horizontal, vertical, or both <img width="1103" height="643" alt="image" src="https://github.com/user-attachments/assets/ff4f0835-a8ca-4603-9441-123b71747d5c" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #44820 - [x] Closes: #44864 - [x] Closes: #44952 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments Feedback for CursorWrap shows that users want the ability to constrain wrapping for horizontal only, vertical only, or both (default behavior). This PR adds a new dropdown to CursorWrap settings to enable a user to select the appropriate wrapping model. ## Validation Steps Performed Local build and running on Surface Laptop 7 Pro - will also validate on a multi-monitor setup. --------- Co-authored-by: vanzue <vanzue@outlook.com>
1 parent bf19bdc commit 5466ab6

File tree

12 files changed

+1242
-817
lines changed

12 files changed

+1242
-817
lines changed

.github/actions/spell-check/expect.txt

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ ADate
2222
ADDSTRING
2323
ADDUNDORECORD
2424
ADifferent
25-
adjacents
2625
ADMINS
2726
adml
2827
admx
@@ -215,8 +214,10 @@ cim
215214
CImage
216215
cla
217216
CLASSDC
217+
classguid
218218
classmethod
219219
CLASSNOTAVAILABLE
220+
claude
220221
CLEARTYPE
221222
clickable
222223
clickonce
@@ -255,7 +256,6 @@ colorhistory
255256
colorhistorylimit
256257
COLORKEY
257258
colorref
258-
Convs
259259
comctl
260260
comdlg
261261
comexp
@@ -276,6 +276,7 @@ CONTEXTHELP
276276
CONTEXTMENUHANDLER
277277
contractversion
278278
CONTROLPARENT
279+
Convs
279280
copiedcolorrepresentation
280281
coppied
281282
copyable
@@ -342,12 +343,14 @@ datareader
342343
datatracker
343344
dataversion
344345
Dayof
346+
dbcc
345347
DBID
346348
DBLCLKS
347349
DBLEPSILON
348350
DBPROP
349351
DBPROPIDSET
350352
DBPROPSET
353+
DBT
351354
DCBA
352355
DCOM
353356
DComposition
@@ -365,8 +368,7 @@ DEFAULTICON
365368
defaultlib
366369
DEFAULTONLY
367370
DEFAULTSIZE
368-
DEFAULTTONEAREST
369-
Defaulttonearest
371+
defaulttonearest
370372
DEFAULTTONULL
371373
DEFAULTTOPRIMARY
372374
DEFERERASE
@@ -388,14 +390,19 @@ DESKTOPVERTRES
388390
devblogs
389391
devdocs
390392
devenv
393+
DEVICEINTERFACE
394+
devicetype
395+
DEVINTERFACE
391396
devmgmt
392397
DEVMODE
393398
DEVMODEW
399+
DEVNODES
394400
devpal
401+
DEVTYP
395402
dfx
396403
DIALOGEX
397-
digicert
398404
diffs
405+
digicert
399406
DINORMAL
400407
DISABLEASACTIONKEY
401408
DISABLENOSCROLL
@@ -538,7 +545,6 @@ fdx
538545
FErase
539546
fesf
540547
FFFF
541-
FInc
542548
Figma
543549
FILEEXPLORER
544550
fileexploreraddons
@@ -559,6 +565,7 @@ FILESYSPATH
559565
Filetime
560566
FILEVERSION
561567
FILTERMODE
568+
FInc
562569
findfast
563570
findmymouse
564571
FIXEDFILEINFO
@@ -660,13 +667,14 @@ HCRYPTPROV
660667
hcursor
661668
hcwhite
662669
hdc
670+
HDEVNOTIFY
663671
hdr
664672
hdrop
665673
hdwwiz
666674
Helpline
667675
helptext
668-
HGFE
669676
hgdiobj
677+
HGFE
670678
hglobal
671679
hhk
672680
HHmmssfff
@@ -742,9 +750,9 @@ HWNDPARENT
742750
HWNDPREV
743751
hyjiacan
744752
IAI
753+
icf
745754
ICONERROR
746755
ICONLOCATION
747-
icf
748756
IDCANCEL
749757
IDD
750758
idk
@@ -835,8 +843,8 @@ jeli
835843
jfif
836844
jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi
837845
jjw
838-
JOBOBJECT
839846
jobject
847+
JOBOBJECT
840848
jpe
841849
jpnime
842850
Jsons
@@ -923,9 +931,9 @@ LOWORD
923931
lparam
924932
LPBITMAPINFOHEADER
925933
LPCFHOOKPROC
934+
lpch
926935
LPCITEMIDLIST
927936
LPCLSID
928-
lpch
929937
lpcmi
930938
LPCMINVOKECOMMANDINFO
931939
LPCREATESTRUCT
@@ -941,6 +949,7 @@ LPMONITORINFO
941949
LPOSVERSIONINFOEXW
942950
LPQUERY
943951
lprc
952+
LPrivate
944953
LPSAFEARRAY
945954
lpstr
946955
lpsz
@@ -950,7 +959,6 @@ lptpm
950959
LPTR
951960
LPTSTR
952961
lpv
953-
LPrivate
954962
LPW
955963
lpwcx
956964
lpwndpl
@@ -994,13 +1002,13 @@ mber
9941002
MBM
9951003
MBR
9961004
Mbuttondown
1005+
mcp
9971006
MDICHILD
9981007
MDL
9991008
mdtext
10001009
mdtxt
10011010
mdwn
10021011
meme
1003-
mcp
10041012
memicmp
10051013
MENUITEMINFO
10061014
MENUITEMINFOW
@@ -1037,6 +1045,7 @@ mmsys
10371045
mobileredirect
10381046
mockapi
10391047
MODALFRAME
1048+
modelcontextprotocol
10401049
MODESPRUNED
10411050
MONITORENUMPROC
10421051
MONITORINFO
@@ -1080,9 +1089,9 @@ MSLLHOOKSTRUCT
10801089
Mso
10811090
msrc
10821091
msstore
1092+
mstsc
10831093
msvcp
10841094
MT
1085-
mstsc
10861095
MTND
10871096
MULTIPLEUSE
10881097
multizone
@@ -1092,11 +1101,11 @@ muxxc
10921101
muxxh
10931102
MVPs
10941103
mvvm
1095-
myorg
1096-
myrepo
10971104
MVVMTK
10981105
MWBEx
10991106
MYICON
1107+
myorg
1108+
myrepo
11001109
NAMECHANGE
11011110
namespaceanddescendants
11021111
nao
@@ -1237,10 +1246,8 @@ opencode
12371246
OPENFILENAME
12381247
openrdp
12391248
opensource
1240-
openxmlformats
1241-
ollama
1242-
onnx
12431249
openurl
1250+
openxmlformats
12441251
OPTIMIZEFORINVOKE
12451252
ORPHANEDDIALOGTITLE
12461253
ORSCANS
@@ -1456,7 +1463,6 @@ rbhid
14561463
Rbuttondown
14571464
rclsid
14581465
RCZOOMIT
1459-
remotedesktop
14601466
rdp
14611467
RDW
14621468
READMODE
@@ -1485,6 +1491,7 @@ remappings
14851491
REMAPSUCCESSFUL
14861492
REMAPUNSUCCESSFUL
14871493
Remotable
1494+
remotedesktop
14881495
remoteip
14891496
Removelnk
14901497
renamable
@@ -1518,8 +1525,8 @@ RIGHTSCROLLBAR
15181525
riid
15191526
RKey
15201527
RNumber
1521-
rop
15221528
rollups
1529+
rop
15231530
ROUNDSMALL
15241531
ROWSETEXT
15251532
rpcrt
@@ -1757,8 +1764,7 @@ SVGIO
17571764
svgz
17581765
SVSI
17591766
SWFO
1760-
SWP
1761-
Swp
1767+
swp
17621768
SWPNOSIZE
17631769
SWPNOZORDER
17641770
SWRESTORE
@@ -1777,8 +1783,7 @@ SYSKEY
17771783
syskeydown
17781784
SYSKEYUP
17791785
SYSLIB
1780-
SYSMENU
1781-
Sysmenu
1786+
sysmenu
17821787
systemai
17831788
SYSTEMAPPS
17841789
SYSTEMMODAL
@@ -1882,9 +1887,9 @@ uitests
18821887
UITo
18831888
ULONGLONG
18841889
Ultrawide
1885-
ums
18861890
UMax
18871891
UMin
1892+
ums
18881893
uncompilable
18891894
UNCPRIORITY
18901895
UNDNAME

src/modules/MouseUtils/CursorWrap/CursorWrap.vcxproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,17 @@
8484
</ClCompile>
8585
</ItemDefinitionGroup>
8686
<ItemGroup>
87+
<ClInclude Include="CursorWrapCore.h" />
8788
<ClInclude Include="CursorWrapTests.h" />
89+
<ClInclude Include="MonitorTopology.h" />
8890
<ClInclude Include="pch.h" />
8991
<ClInclude Include="trace.h" />
9092
<ClInclude Include="resource.h" />
9193
</ItemGroup>
9294
<ItemGroup>
95+
<ClCompile Include="CursorWrapCore.cpp" />
9396
<ClCompile Include="dllmain.cpp" />
94-
97+
<ClCompile Include="MonitorTopology.cpp" />
9598
<ClCompile Include="pch.cpp">
9699
<PrecompiledHeader Condition="'$(UsePrecompiledHeaders)' != 'false'">Create</PrecompiledHeader>
97100
</ClCompile>

0 commit comments

Comments
 (0)