Skip to content

Drag-and-drop/clipboard issues #617

Description

@nikita-leontiev

1. Test: drag-and-drop to local file system location opened in Explorer++, operation will be performed asynchronously.
Result: IAsyncOperation::EndOperation is not called after operation is completed.
EndOperation must be called according to an API contract.
2. Test: rmb drag-and-drop to local file system location opened in Explorer++, selecting Cancel from context menu.
Result: IDropTarget::Drop handler returned DRAGDROP_S_DROP, pdwEffect set to Copy|Move|Link (7) i.e. dwOKEffects value from DoDragDrop.
IDropTarget::Drop should return DRAGDROP_S_CANCEL. pdwEffect should be set to None (0).
3. Test: FileGroupDescriptor drag-and-drop to local file system location opened in Explorer++.
Result: IDropTarget::Drop handler set pdwEffect to Copy|Move (3) i.e. dwOKEffects value.
pdwEffect should be set to performed operation.
4. Test: FileGroupDescriptor move drag-and-drop to local file system location opened in Explorer++.
Result: pdwEffect set to Copy|Move (3), SetData called with Performed DropEffect=Copy (1).
Since context menu includes move option and drag-and-drop cursor is move too, move operation is supported, so pdwEffect and Performed DropEffect should be set to Move (2).
5. Test: drag-and-drop from zip archive opened in Explorer++.
Result: Explorer++ populates HDROP format with virtual path:

Offset    Bytes                                             ASCII
--------  ------------------------------------------------  ----------------
00000000  14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
00000010  01 00 00 00 44 00 3A 00 5C 00 74 00 65 00 73 00   ....D.:.\.t.e.s.
00000020  74 00 2E 00 7A 00 69 00 70 00 5C 00 74 00 65 00   t...z.i.p.\.t.e.
00000030  73 00 74 00 2E 00 74 00 78 00 74 00 00 00 00 00   s.t...t.x.t.....

HDROP format should not be used for virtual files.
Same issue with copy to clipboard.
Also, DoDragDrop dwOKEffects value is Copy|Move|Link (7), but link is not supported operation for archives.
6. Test: drag-and-drop to zip archive opened in Explorer++.
Result: Explorer++ tries to overwrite the archive instead of adding file to the archive.
Same issue with pasting from clipboard.
7. Test: rmb drag-and-drop to zip archive opened in Explorer++, selecting Copy from context menu.
Result: file has been added to the archive, but listing is not updated. pdwEffect set to Copy|Move|Link (7) instead of performed operation.
Same for move operation.
For cancel, pdwEffect is not None (0).
8. Test: drag-and-drop from FTP listing opened in Explorer++.
Result: Explorer++ populates HDROP format with virtual path:

Offset    Bytes                                             ASCII
--------  ------------------------------------------------  ----------------
00000000  14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
00000010  01 00 00 00 66 00 74 00 70 00 3A 00 2F 00 2F 00   ....f.t.p.:././.
00000020  75 00 73 00 65 00 72 00 3A 00 75 00 73 00 65 00   u.s.e.r.:.u.s.e.
00000030  72 00 40 00 31 00 32 00 37 00 2E 00 30 00 2E 00   r.@.1.2.7...0...
00000040  30 00 2E 00 31 00 2F 00 74 00 65 00 73 00 74 00   0...1./.t.e.s.t.
00000050  2E 00 74 00 78 00 74 00 00 00 00 00               ..t.x.t.....    

Shell IDList Array format is used too.
HDROP and Shell IDList Array formats can't be used for FTP files. FileGroupDescriptor format should be used instead or HDROP + source file in the temp folder.
Same issue with copy to clipboard.
Also, DoDragDrop dwOKEffects value is Copy|Move|Link (7), but link is not supported operation for FTP.
9. Test: pasting file from clipboard to FTP listing opened in Explorer++.
Result: "...\Explorer++\ftp:\user" directory creation confirmation displayed.
10. Test: pasting FileGroupDescriptor that contains file from clipboard to FTP listing opened in Explorer++.
Result: IStream reading performed, Performed DropEffect set to Copy (1), but file is not created on FTP.

Explorer++ version 1.4.0.2293 (64-bit build)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions