Repository navigation
Drop files on Explorer tabs as Explorer would, without the interop DLLs - #56
Merged
Merged
Conversation
Each path's buffer is sized to the path instead of 512 characters, and the dropped file list is released after reading.
Explorer folders are found late bound through Shell.Application, so the two interop assemblies are gone. Windows are matched by handle before their view is read, so an Explorer view without a folder no longer breaks every drop. The folder is looked up once per hovered tab instead of on every drag move. Drops can be undone in Explorer, and the source is told the shell did the work, so it cannot act on the files again.
Resting the pointer on a tab whose title is cut by the ellipsis, or hidden beside its icon, shows the whole title under the strip in the app's theme, wrapped past 470px. Moving to another cut title shows it at once; a click, leaving the strip or the strip hiding puts it away.
Within one drive a drop moves, across drives it copies; Ctrl copies, Shift moves, and files dropped back on their own folder's tab stay put. All files go in one shell operation on its own thread: one progress dialog, one round of name conflicts, one step for Ctrl+Z, and the tabs stay responsive. The drag image stays over the strip with a line such as "Move to Downloads", and a tab's window comes forward only once the pointer rests on it for 300 ms.
A Windows 11 Explorer window holds a folder per tab; a drop on its WindowTabs tab now goes to the folder on show instead of the first one. Dropped files also appear and disappear in open Explorer windows at once: the shell's change notices are flushed before the operation's thread ends, where they were lost.
Flushing the shell's queued notices did nothing, as the flush flag cannot stand alone; each folder the operation touched is now told to refresh, delivered before the operation's thread ends.
An emptied WindowTabsCrash.log still showed the Crash log link and opened a blank file; logs without an entry are now passed over, for the link and the tray notice alike.
Files on this PC end the row flush right, apart from the web links on the left, and move to their own line, still at the right, when the row is too narrow.
The progress dialog took the foreground and, closing, could leave it to no window or another app's hidden one, so keys after a drop went nowhere. The folder's window gets it back then; a window the user moved on to keeps it.
The drop recorded the released right button before reading it, so a right-drag moved or copied without asking. The menu is now the themed one the tab menu uses.
…what a drop does DragQueryFile bound its ANSI entry point, which turned a name such as 小麦-0.1.24-x64-setup.exe into question marks, so the file was not found and the drop did nothing. The Unicode entry point reads it whole. The source's drag image covered the tabs being aimed at. A line under the strip, in the app's theme, now says what letting go does, such as "Move to Downloads".
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
Dropping files on tabs
Shell.Application, soInterop.SHDocVw.dllandInterop.Shell32.dllare gone from the repo and the build.DragQueryFileW. The ANSI entry point turned a name such as小麦-0.1.24-x64-setup.exeinto question marks, so the drop did nothing.Other
Notes
master. The earlier "Put Taskbar before Window switcher" commit was already merged through Combined taskbar icons: apply to open groups, badge and preview fixes #54 and dropped out. The README conflict was resolved in the new, shorter README style.Tests
tests/Run-Tests.ps1: all suites pass locally after the rebase. The branch adds checks inArchitecture,ReliabilityandTabInteraction, including reading a dropped path with Chinese characters and moving that file. That check fails without the fix.