Because of a bug report I’ve received from a customer with brand new Microsoft Surface systems running the May 2020 Windows 10 update, I’ve just created the simplest app that I can think of for testing drag and drop. My lab team built a brand new i7 system and installed the May 2020 update onto it. I then installed JUST Xojo 2019r3.1 - NO added plugnis and no other Windows software.
Created a new Desktop Project
Set the build type to Windows 64bit
Added a Listbox to the default Window
Enabled Show Drop Indicator in the ListBox properties
Added the “DropObject” event to the ListBox
Added this code to that event:
If obj.FolderItemAvailable Then
Me.AddRow obj.FolderItem.NativePath
ElseIf obj.TextAvailable Then
me.AddRow obj.Text
End If
Run the project
Try and drag the C: drive from an Explorer window with “This PC” open (also tested a simple text file from my home folder)
The drag gets the NOT symbol as soon as I hover over the Xojo app and I can’t drop the selection onto the listbox.
The same code works on macOS and Linux.
What have I missed? Something in W10 May 2020 that’s biting us?
[EDIT] - the issue is that Windows requires Me.AcceptFileDrop("???") in the ListBox.Open event instead of the expected Me.AcceptFileDrop(“Any”) with an entry in a FileTypes module.
The online docs on the ListBox are very lacking. I’ve seen many requests for improvements in Feedback, but Feedback’s search is being as helpful as always …
For example -
If I want a listbox to accept “Any” filetype, is it enough to only have the default “Any” entry in the FileTypes module? Do I also need to add the AcceptileDrop() to the Listbox’s parent window, container, etc. for it to get through to the ListBox?
I have always done an empty string for accept-any. However, I haven’t seen drag & drop work on Windows so it could be the wrong thing to do. Drag and drop on Windows being broken is the biggest noticeable difference between platforms for Plugins Pro.
Ok, I need a clarification. I have a filetype defined (in FileTypes1) with the Name ‘Any’ and the Display Name ‘special/any’. Which should I use in <>.AcceptFileDrop statements?
For a test,
Me.AcceptFileDrop ("special/any") ' this works
Me.AcceptFileDrop ("Any") ' this fails
That kind of answers the question but why have a Name if you still have to use the Display Name?
It seems to only be an issue with Windows. Just using “Any” works with Linux and macOS. Also, I suspect that it also works with “some” versions of Windows since we’re not receiving feedback from other users.