Add Explorer Nav DragOver Fix mod (nav hover-expand jump + wheel during drag)#4192
Merged
m417z merged 8 commits intoJun 1, 2026
Merged
Conversation
…hover auto-expand and restores mouse wheel scrolling during drag-and-drop in File Explorer.
…se Wh_GetIntSetting for improved clarity and consistency.
Forward drag-time wheel to Explorer SysListView32 while preserving nav-pane behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
Wheel forwarding now targets Explorer nav pane and main file list pane. Co-authored-by: Cursor <cursoragent@cursor.com>
… to streamline code and improve clarity.
- Forward drag-time wheel to the right file pane (ItemsView/DirectUI on Win11 25H2 Details, classic SysListView32 in Large icons/List). - Prefer UI Automation ScrollPattern before wheel messages; never target SHELLDLL_DefView for modern hosts. - v1.1.8: try UIA on all content hosts including SysListView32. - Per-drag caches, COM on drag thread, named timeouts, subclass race fix, readme troubleshooting.
…1.1.9) Scale UIA Scroll() calls using SPI_GETWHEELSCROLLLINES/CHARS so file-pane wheel during drag matches normal line scroll. Remove the old 2-call cap that muted travel. Bump version to 1.1.9.
m417z
reviewed
May 30, 2026
| } | ||
|
|
||
| CabinetAtPointContext ctx{pt}; | ||
| EnumWindows(CabinetAtPointEnumProc, reinterpret_cast<LPARAM>(&ctx)); |
Member
There was a problem hiding this comment.
This might return a window that belongs to another process. Also, why is the check above not enough?
Contributor
Author
There was a problem hiding this comment.
The WindowFromPoint path is not enough during DoDragDrop: the cursor can sit over an Explorer frame while WindowFromPoint returns a drag-feedback layer whose root is not CabinetWClass. The fallback is a same-process geometry hit test for that case.
Added a GetCurrentProcessId() filter so we do not match another process's top-level window that happens to use the same class name.
Remove redundant nested EnumChildWindows walks, restrict cabinet hit-test fallback to the current process, correct Wh_ModInit lifecycle comments, and drop the init-time drag-generation bump that assumed DLL reuse on toggle. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Explorer Nav DragOver Fix (explorer-nav-dragover-fix) for explorer.exe.
Fixes two long-standing File Explorer drag-and-drop annoyances that stock Explorer don’t address together: nav-pane jump on hover-expand and mouse-wheel input swallowed during drag. One mod, both panes, drag stays alive.
Jump on hover-expand — Dragging over top-level nav items (drives, pinned folders, “This PC”) triggers auto-expand; Explorer often scrolls the pane and the row you were aiming at disappears. The mod pins the first visible item and keeps the drop highlight on the captured parent row until the cursor leaves that row. Deeper folders still expand normally without the anchor.
Wheel during drag — Restores vertical (and horizontal) wheel scrolling over the left navigation tree and the right file area while a drag is active, so you can reach off-screen drop targets without releasing. Optional setting restores native no-scroll behavior.
Demo: explorer-nav-dragover-fix-demo.gif (submitter fork)
Notes for reviewers
Implementation notes
Nav: SysTreeView32 when over the tree.
Testing
Changelog
New mod — initial release 1.1.9.
Mod authorship
This mod was created by:
License: MIT (
@licensein mod metadata).Author metadata:
@githubmatches PR author (tonythethompson).