explorer-nav-dragover-fix: v1.2 edge-scroll and transient folder collapse#4294
explorer-nav-dragover-fix: v1.2 edge-scroll and transient folder collapse#4294tonythethompson wants to merge 3 commits into
Conversation
…lapse Adds accelerated nav edge-scroll during drag, optional staggered collapse of folders opened only by drag-hover, and drag-session tracking so wheel scroll between branch families (e.g. drives) no longer orphans collapse. Successful drops preserve the branch containing the last nav drop target. Co-authored-by: Cursor <cursoragent@cursor.com>
Submission reviewNote: This review was done by Claude, and then refined manually. Due to the amount of submissions, doing a fully manual review for each pull request is no longer feasible. Thank you for understanding. Please address the following issues. The items in the collapsed sections are optional, so it's your call whether to address them. The main note is about the mod's functionality. I didn't inspect the code's logic manually, please check the review and and address it, or let me know if it's not correct. One correctness issue with the new "preserve on drop" feature: Preserve-on-drop collapses the drop target's ancestors instead of preserving them ( if (successfulDrop && entry.hwndTree == preserveTree && preserveItem &&
IsSameOrDescendant(entry.hwndTree, entry.hItem, preserveItem)) {
continue; // keep this expansion
}
But the feature (and your PR notes — "ancestors on the drop path stay expanded") needs the opposite: keep the expansions that contain the drop target. Concretely, drag a file, hover Fix is to swap the two item arguments so you preserve an expansion when it is an ancestor-or-self of the drop target (drop target is same-or-descendant of the expansion): IsSameOrDescendant(entry.hwndTree, preserveItem, entry.hItem)) {Optional improvements
Minor polish — none of this affects users, so it's your call.
Functionality notes
Non-critical observations about the feature behavior itself.
|
Swap preserve-on-drop IsSameOrDescendant args so ancestor expansions on the drop path stay open. Cancel pending stagger timers on new drag and on mod unload instead of draining collapses during teardown. Align protectedMaxDepth struct default with settings (3). v1.2.5. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Thanks for the review — addressed in Blocking: Swapped preserve-on-drop to Optional improvements (from review):
|
Remove staggered timer collapse, transientCollapseStaggerMs setting, and ~200 lines of timer session machinery. Drag-end cleanup is a single deepest-first pass plus reconcile. v1.2.6. Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
Follow-up to the merged Explorer Nav DragOver Fix mod (#4192). Bumps the mod to v1.2.4 with:
New settings
accelerateEdgeScrollDuringDragtrueedgeScrollBandPx48edgeScrollMaxLines6collapseTransientExpansionstruetransientCollapseStaggerMs1400= instant (0–800)Existing anti-jump and wheel-during-drag settings are unchanged.
Implementation notes
itemLParamand re-resolves items after staggeredTVM_EXPANDcollapse if handles go stale.WM_TIMER,WM_SETREDRAW, and a reconcile pass for missed folders.Testing
transientCollapseStaggerMsat0and at180–250— instant vs calmer stepped collapse.Changelog
1.2.4
1.2.0–1.2.3 (included in this PR)
lParamre-resolution.Mod authorship