Robbert van der Helm
7a2febfffb
Support the older XDND versions 3 and 4
...
This is needed for Tracktion Waveform and other JUCE based hosts.
2021-07-23 13:19:10 +02:00
Robbert van der Helm
75ab133adb
Change ProxyWindow into a more generic X11Window
2021-07-21 14:37:52 +02:00
Robbert van der Helm
d8215e4664
Allow cancelling the drag-and-drop with Escape
2021-07-12 22:58:24 +02:00
Robbert van der Helm
2f8bb7ef06
Only allow a single XDND operation at a time
...
MT-PowerDrumkit apparently cancels its drag-and-drop operations and then
immediately starts a new one.
2021-07-12 12:35:07 +02:00
Robbert van der Helm
a478436af6
Make sure the Windows dnd operation terminates
...
I've seen a weird edge case where this doesn't happen once, but i
haven't been able to reproduce it. Hopefully this fixes it.
2021-07-12 12:21:52 +02:00
Robbert van der Helm
ca5a7b2b96
Continue polling while LMB is held
...
Instead of while the tracker window is alive. Technically the plugin may
clean up their files after the tracker window is gone, but in practice I
haven't seen it happen.
2021-07-11 18:34:26 +02:00
Robbert van der Helm
64fbabd8ce
Canonicalize paths during drag-and-drop
...
Otherwise we will get a path from somewhere in `$WINEPREFIX/dosdevices`.
2021-07-11 17:03:53 +02:00
Robbert van der Helm
0e0b120eda
Perform the actual drop after releasing the button
2021-07-11 15:13:32 +02:00
Robbert van der Helm
4e67fa9212
Fetch atoms for the remaining two XDND messages
...
We're going to need these anyways.
2021-07-11 14:14:02 +02:00
Robbert van der Helm
7b5810ae57
Listen for XdndStatus
2021-07-11 14:12:35 +02:00
Robbert van der Helm
b6fd0405fb
Transform the file list into text/uri-list format
2021-07-11 13:20:36 +02:00
Robbert van der Helm
6f3beca32a
Send XdndPosition messages
2021-07-11 12:34:04 +02:00
Robbert van der Helm
eac9f9433b
Clean up X11 client message functions
...
clang-tidy would warn about all parameters being the same, which is
true, but that's kind of the point here.
2021-07-11 12:15:30 +02:00
Robbert van der Helm
94125f9eab
Announce XdndEnter and XdndLeave
2021-07-10 23:50:39 +02:00
Robbert van der Helm
7d8a252301
Implement the function for sending XDND messages
2021-07-10 23:18:18 +02:00
Robbert van der Helm
2e153304dd
Find the first XDND aware window under the cursor
2021-07-10 23:08:37 +02:00
Robbert van der Helm
091ab0f0df
Spawn a thread to fake do our XDND polling
...
We cannot integrate this into our event loop like we planned, because
Wine a) grabs the mouse pointer so we cannot do that, and b) blocks the
GUI thread. So instead we will spawn our own thread and do polling based
XDND. When Wine's tracker window gets destroyed, we know that the left
mouse button has been released.
2021-07-10 19:28:40 +02:00
Robbert van der Helm
f044dc4784
Fetch basic atoms for XDND
2021-07-10 17:48:22 +02:00
Robbert van der Helm
3372f4424e
Create a window for the X11 proxy
2021-07-10 16:43:23 +02:00
Robbert van der Helm
d908db5476
Add an X11 event handling function to the proxy
2021-07-10 16:19:23 +02:00
Robbert van der Helm
b47a6e034b
Rename init_proxy -> get_handle
2021-07-10 15:16:20 +02:00
Robbert van der Helm
bc9d4d02a2
Fix copy and move semantics for DnD proxy handle
2021-07-10 02:17:10 +02:00
Robbert van der Helm
dbb1b09256
Add proper copy and move semantics to proxy handle
2021-07-10 00:49:11 +02:00
Robbert van der Helm
2ba2cf1ab7
Free the drag-and-drop proxy after closing editors
...
Apparently X11 connections are a scarce resource, so it seems like a
good idea to not hang on to them for too long. Now this is sort of a
hybrid between COM-style memory management and a singleton.
2021-07-10 00:15:38 +02:00
Robbert van der Helm
b1e3488a24
Add an X11 connection to the drag-and-drop proxy
2021-07-10 00:09:29 +02:00
Robbert van der Helm
b3001cc22b
Add missing #pragma once
...
Oops.
2021-07-09 21:47:01 +02:00
Robbert van der Helm
dd14a90f9a
Only handle drag-and-drop from this process
...
When called from another process the data pointer will of course be
invalid, so every process must handle their own drag-and-drop.
2021-07-09 21:32:56 +02:00
Robbert van der Helm
fc61658ada
Add the start for a Wine->X11 DnD wrapper
2021-07-09 18:48:11 +02:00