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
bfaac67cbc
End every URI with a line feed
...
Bitwig requires this.
2021-07-11 16:53:38 +02:00
Robbert van der Helm
8d94abb257
Only send the drop once
...
Oops.
2021-07-11 16:30:28 +02:00
Robbert van der Helm
a12215de3c
Fix URI list length
...
Apparently you're _not_ supposed to count the trailing lien feed. This
would cause REAPER to freeze.
2021-07-11 16:30:21 +02:00
Robbert van der Helm
8e29b5edf3
Make sure the drop actually goes through
...
The whole dropping code was nested in the wrong loop (oops), and we also
forgot to send any last spooled messages. We now also use a pair of
booleans instead of an optional boolean here because it makes the
conditionals a bit more readable.
2021-07-11 15:55:34 +02:00
Robbert van der Helm
f6d661cd35
Fix the timeout
2021-07-11 15:28:14 +02:00
Robbert van der Helm
7bac138240
Spool XdndPosition messages
...
In accordance to the spec.
2021-07-11 15:28:01 +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
8fc1097f84
Change cursor depending on XdndStatus
2021-07-11 14:32:48 +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
2671511dc0
Handle ConvertSelection for XDND
2021-07-11 14:05:09 +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
e0ff16cd16
Fix XDND transition state when leaving window
...
Just resetting the last window is of course not enough here. I think
Dolphin/Qt run into the same issue, because their drop seems to stick
when hovering over Emacs (or Emacs is to blame, which could very well be
the case here).
2021-07-11 12:12:02 +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
82f7a8f799
Check property type instead of format
...
All of these fields should be zero, but this sounds like the better way
to test this.
2021-07-10 22:24:06 +02:00
Robbert van der Helm
916b1ed6c0
Track the last window we hovered over, if valid
2021-07-10 20:26:45 +02:00
Robbert van der Helm
92daa33adf
Ignore Wine windows in the drag-and-drop handling
...
Wine will be able to handle this better than we can, and we of course
don't want any conflicts here.
2021-07-10 19:57:09 +02:00
Robbert van der Helm
998e222651
Fix definition clashes in unity build
2021-07-10 19:38:24 +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
42ce69943a
Fix typo in X11 error message
2021-07-10 18:22:54 +02:00
Robbert van der Helm
f044dc4784
Fetch basic atoms for XDND
2021-07-10 17:48:22 +02:00
Robbert van der Helm
ddac793e82
Add a function for fetching X11 atoms by name
2021-07-10 17:22:04 +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
a8b7dc8764
Move the dnd proxy WinEvent callback around
2021-07-10 16:19:52 +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
1946693244
Expand on the new mutual recursion changelog entry
2021-07-10 14:40:06 +02:00
Robbert van der Helm
3c94ee7049
Only perform mutual recursion from the GUI thread
...
JUCE incorrectly calls `IComponentHandler::performEdit()` from the audio
thread instead of using the output parameter changes queue, so this
would also cause GUI resizes to be handled from the audio thread if they
come in at the same time as such a parameter change.
2021-07-10 14:30:52 +02:00
Robbert van der Helm
04a8be6cc6
Keep track of which thread the GUI thread is
2021-07-10 14:21:50 +02:00
Robbert van der Helm
df75427f69
Store the dragged files so we can use them in XDND
2021-07-10 13:06:46 +02:00
Robbert van der Helm
c0871e3b5d
Unify drag-and-drop debug messages
2021-07-10 12:44:14 +02:00
Robbert van der Helm
b951260795
Update the tested DAW versions
2021-07-10 12:39:41 +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
41160adc33
Fix the drag-and-drop debugging message
...
Because why not?
2021-07-09 21:37:29 +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
f33c02f4f7
Add a proof of concept drag-and-drop snooper
...
This doesn't do anything useful yet, but it will print the names of
files that are being dragged and dropped on the Wine server (using the
OLE API) while the plugin is open.
2021-07-09 20:53:15 +02:00
Robbert van der Helm
fc61658ada
Add the start for a Wine->X11 DnD wrapper
2021-07-09 18:48:11 +02:00
Robbert van der Helm
f1a8ed1668
Update the tested REAPER version
2021-07-08 19:35:27 +02:00
Robbert van der Helm
b72b6f8273
Change const static to static const
...
To match the order used everywhere else.
2021-07-08 18:18:29 +02:00
Robbert van der Helm
a58a1ab111
Update parameter name in header
...
Apparently this wasn't saved yet when I commited
a06d0bc515 .
2021-07-05 18:29:04 +02:00
Robbert van der Helm
bf84057044
[yabridgectl] Normalize symlinks for plugin counts
...
Now this should actually be correct with partially overlapping plugin
directories when symlinks were used.
2021-07-05 17:56:22 +02:00