Fluid-Zoom - #5028
Conversation
|
Thanks for the pull request! This repository uses a two-stage review: an AI review that you run yourself, followed by a human review. To get started, comment See the pull request review process for the full details. |
|
/ai-review |
Submission reviewNote: This review was done by Claude. Due to the amount of submissions, doing a fully manual review for each pull request is no longer feasible. Thank you for understanding. Remember: The AI reviewer can be wrong - it may misread code, flag correct code as broken, or suggest changes that make things worse. Treat its findings as suggestions to verify, not instructions to follow blindly. You're responsible for the code you submit, so if a finding doesn't hold up, say so instead of changing working code to satisfy it. Please address the following issues. The items in the collapsed sections are optional, so it's your call whether to address them. Nice idea, and the README/GIF are good. The mod doesn't hook anything though, so it shouldn't be living inside Explorer, and the unload path can crash the shell. Details below. 1. This should be a tool mod, not an The mod installs no function hooks at all — it only uses
Switch to 2. if (WaitForSingleObject(g_hThread, 3000) == WAIT_TIMEOUT)
TerminateThread(g_hThread, 0);If that path is taken, none of the thread's cleanup runs: the two low-level hooks stay installed with hook procedures pointing into the mod image, the overlay window stays alive with a
3.
Both go away with the ready-event + 4. The registry write is a persistent system change. RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\ScreenMagnifier", ...);
RegSetValueExW(hk, L"UseBitmapSmoothing", ...);That's the Windows Magnifier's own user setting. The mod overwrites it on every load and on every settings change, and never restores it — so disabling the mod leaves the user's Magnifier configuration permanently changed. Mods must be fully reversible and must not write to arbitrary registry locations; use It's also redundant: 5. Window class: unchecked registration + cleanup only on the happy path. wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = L"ScreenZoom_Overlay_v21";
RegisterClassW(&wc); // return value ignoredA class registered by the mod is not unregistered when the mod DLL unloads — and here Fix: check the 6. Magnification calls inside the low-level mouse hook.
The hook already runs on the same thread that owns the overlay, so the fix is cheap: in the hook, only update 7. The fullscreen overlay swallows a lot of normal input while the modifier is held. Covering the whole virtual desktop with a topmost input-capturing window whenever Alt (or Shift) is down has broad fallout:
Given that precision-touchpad two-finger scroll doesn't reach Separately, the overlay is created full-screen, topmost and 8. The overlay can get stuck covering the screen.
9. g_bInjecting = true;
SendInput(1, &in, sizeof(INPUT));
g_bInjecting = false;
10. Pinch-to-zoom is hijacked system-wide with no way to opt out. Once 11. Both are on/off flags declared as numbers, with - smoothEdges: false
$name: Smooth edges
$description: Sharp/pixelated (best for coding) when off, soft/blurry (best for media) when on.
- integerSnap: false
$name: Integer zoom only
$description: Snap the zoom level to whole multipliers (2x, 3x, 4x...).That also removes the current inconsistency in Optional improvements
Minor polish — none of this affects users, so it's your call.
Functionality notes
Non-critical observations and ideas about the feature behavior itself.
Next steps:
See the review process for details. |
Summary
Adds a new Windhawk mod called Fluid Zoom.
Features
GitHub repository:
https://github.com/gauravrocks009/Windhawk-Fluid-Zoom
Changelog
N/A (new mod)
Mod authorship