Commit Graph

39 Commits

Author SHA1 Message Date
Robbert van der Helm 49e696e42f Update the copyright headers
Happy new year!
2024-01-09 19:25:38 +01:00
Robbert van der Helm 1e66654c2e Update copyright headers for 2023
Happy new year!
2023-01-01 18:51:35 +01:00
Robbert van der Helm 987ce8f204 Rename asio-fix.h to use-linux-asio.h
Bit of an ugly verbose name but it probably makes it much clearer why
the include is needed.
2022-10-26 17:10:18 +02:00
Robbert van der Helm 9cea175f2a Globally ignore attribute warnings on Wine side
These started happening after Wine 5.12, and it doesn't look like it's
going to change.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 1fec4c8860 Change the description in the GPL header 2022-04-16 20:37:10 +02:00
Robbert van der Helm b2a15620f3 Swap Boost.Container's small_vector out for LLVM's
This implementation misses a shrink to fit function, but reassigning the
vector with a fresh one should be equivalent.
2022-04-16 20:37:10 +02:00
Robbert van der Helm 75b3cf266d Add Process functions for detached spawning 2022-04-16 20:37:10 +02:00
Robbert van der Helm 556b0e38f9 Replace Boost.Asio with standalone Asio library
We had to add an even hackier hack now to get Boost.Process to
interoperate with Asio's IO contexts. This will be replaced later when
we replace Boost.Process.
2022-04-14 23:42:12 +02:00
Robbert van der Helm d2d4cf4ea9 Replace most uses of Boost.{Filesystem,Process}
With the `ghc::filesystem` dependency from the previous commit. If we
can replace the rest of the Boost.Filesystem dependency then we can get
rid the one nasty runtime dependency we have, and it will make
implementing the chainloading simpler since can reuse more code without
bringing in Boost.
2022-04-14 23:42:12 +02:00
Robbert van der Helm 0b9a16cf40 Change the naming scheme for class field members
I'm not a fan of Hungarian notation, but C++ kind of needs it with its
implicit `this`. And of all the common options for this, I find
suffixing members with an underscore the least offensive one.
2022-01-01 21:07:17 +01:00
Robbert van der Helm e0ab24e645 Update copyright headers
Happy new year!
2022-01-01 18:32:10 +01:00
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