Skip to content

Ready for Review - [Mouse Jump] - port upstream WinUI3 code to Mouse Jump (microsoft#48290) - #48393

Merged
moooyo merged 38 commits into
microsoft:mainfrom
mikeclayton:dev/mikeclayton/mousejump-winui-port
Aug 7, 2026
Merged

Ready for Review - [Mouse Jump] - port upstream WinUI3 code to Mouse Jump (microsoft#48290)#48393
moooyo merged 38 commits into
microsoft:mainfrom
mikeclayton:dev/mikeclayton/mousejump-winui-port

Conversation

@mikeclayton

@mikeclayton Michael Clayton (mikeclayton) commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Summary of the Pull Request

Changes for #48290 to convert Mouse Jump to a WinUI app and remove all remaining dependencies on WinForms, based on work already done in the original "FancyMouse" project (https://github.com/mikeclayton/FancyMouse).

Notes for reviewers

  • the new WinUI build of the app is output into the "/WinUI3Apps" subfolder

  • there's 2 new assemblies that need to be added to the installation as well - MouseJump.HotKeys.dll and MouseJump.Models.dll. I'm not sure how to add those to the installer for signing / shipping...


Summary of changes

  • New thumbnail layout and rendering code
  • WinUI rewrite (winforms version still committed)
  • MouseJump.Kicker (dev launch tool)
  • CsWin32 for interop
  • New assemblies - code reorganised

1. New layout code

Incorporates latest FancyMouse core layout and rendering logic into Mouse Jump:

image

2. WinUI rewrite

Port latest stable FancyMouse WinUI implementation into Mouse Jump.

Existing WinForms UI left in-situ side-by-side for now - easy to delete if not needed.

3. MouseJump.Kicker

A small dev utility to start Mouse Jump without needing to build the runner project:

image

4. Cswin32 for interop

All win32 interop is now accessed via CsWin32 bindings.

The original win32 bindings were heavily influenced by CsWin32 generated code (e.g. BOOL, HWND, etc structs), so there's not actually much change other than deleting a lot of boilerplate code.

5. New assemblies

Some code has been reorganised into new assemblies to make it easier to keep Mouse Jump in sync with upstream FancyMouse

  • MouseJump.HotKeys
  • MouseJump.Models

PR Checklist

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

  • Workflow tests
    • Automated tests passing locally
    • Minimal actions workflow (spelling check) passing for PR
    • Full actions workflow (msbuild) passing for PR
  • UI tests
  • Settings tests
    • Changing thumbnail size settings updates the size of the thumbnail
    • Changing preview type between Compact, Bezelled and Custom shows the correct preview type
    • Changing custom preview settings shows the correct settings
    • Launching with settings version 1.0 upgrades settings to version 1.1, with "Bezelled" as the default style and the "Custom" settings preconfigured to match "Bezelled"
  • Lifecycle tests
    • Starting PowerToys Runner launches MouseJump exe when enabled, and not when disabled
    • Enabling / disabling Mouse Jump in settings starts / stops MouseJump exe
    • Exiting PowerToys Runner stops MouseJump exe
    • Killing runner exe via Task Manager stops MouseJump exe
    • Stopping Visual Studio local debug run stops MouseJump exe
      • note - runner needs to be in non-admin mode otherwise Visual Studio debugger disconnects at launch
    • Hotkey and size settings are automatically reloaded when config file is modified from Settings UI
    • Hotkey and size settings are automatically reloaded when config file is modified manually (e.g. in notepad) while runner and MouseJumpUI.exe are running
  • Internal Test Suite
    • Enable Mouse Jump. Then:
    • Press the activation shortcut and verify the screens preview appears.
    • Change activation shortcut and verify that new shortcut triggers Mouse Jump.
    • Click around the screen preview and ensure that mouse cursor jumped to clicked location.
    • Reorder screens in Display settings and confirm that Mouse Jump reflects the change and still works correctly.
    • Change scaling of screens and confirm that Mouse Jump still works correctly.
    • Unplug additional monitors and confirm that Mouse Jump still works correctly.
    • Disable Mouse Jump and verify that the module is not activated when you press the activation shortcut.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check-spelling found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Comment thread src/modules/MouseUtils/MouseJump.Common/Helpers/MouseHelper.cs Fixed
Comment thread src/modules/MouseUtils/MouseJump.Common/Interop/Win32WindowClass.cs Fixed
Comment thread src/modules/MouseUtils/MouseJump.HotKeys/Keys.cs Fixed
Comment thread src/modules/MouseUtils/MouseJump.HotKeys/Keys.cs Fixed
Comment thread src/modules/MouseUtils/MouseJump.Kicker/readme.md Fixed
Comment thread src/modules/MouseUtils/MouseJump.WinUI3/UI/PreviewWindow.xaml.cs Fixed
Comment thread src/modules/MouseUtils/MouseJump.WinUI3/UI/PreviewWindow.xaml.cs Fixed
Comment thread src/modules/MouseUtils/MouseJumpUI/UI/MainForm.cs Fixed
Comment thread src/modules/MouseUtils/MouseJumpUI/UI/MainForm.cs Fixed
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

Copy link
Copy Markdown

Thank you for contributing to PowerToys. We've detected that this PR might include a new or modified telemetry event. Please ensure the following before merging:

@mikeclayton Michael Clayton (mikeclayton) changed the title WIP - [Mouse Jump] - port upstream WinUI3 code to Mouse Jump (microsoft#48290) Ready for Review - [Mouse Jump] - port upstream WinUI3 code to Mouse Jump (microsoft#48290) Jun 24, 2026
@mikeclayton

Michael Clayton (mikeclayton) commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

The current code basically works, but I've not been through the testing checklist from top to bottom yet. Happy for reviews to wait until I've done that, or feel free to forge ahead...

Also, re telemetry in the comment above, I think it's just detecting events in the new WinUI project folder - these are the same as the ones in the WinForms version so no new telemetry added.

@mikeclayton

Copy link
Copy Markdown
Contributor Author

Niels Laute (@niels9001) - 3rd time lucky - I've moved the MouseJump.Kicker winforms dev util into \tools and addressed all the latest CoPilot review points. Hopefully that'll be the last iteration :-) 🤞 .

Only conflict was .github/actions/spell-check/expect.txt (kept both
'cascadia' and 'caseinsensitive', sorted). PowerToys.slnx auto-merged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8e04a72e-3b0f-4ac4-8156-d04ea9b8bb85
@mikeclayton

Michael Clayton (mikeclayton) commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Just a reminder in case it gets lost in the comments - there's no signing / installation changes made yet in this PR as I'm not really sure how to do that.

There's a couple of new dlls, the main exe is renamed and it's all now in the WinUIApps subfolder, if someone is able to help with integrating that into the installer...

@moooyo

moooyo commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@moooyo
moooyo enabled auto-merge (squash) August 5, 2026 09:46
@moooyo

moooyo commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@moooyo

moooyo commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@moooyo
moooyo disabled auto-merge August 6, 2026 09:24
@moooyo

moooyo commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@moooyo
moooyo merged commit e0010c5 into microsoft:main Aug 7, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Mouse Jump] - port to WInUI3 (from FancyMouse WinUI3 version)

8 participants