Browse Source

Fix X11 clipboard manager store completion (#20514)

* Fix X11 clipboard manager store completion

* Restore storeAtomTcs completion on selection clear
pull/20449/head
Julien Lebosquain 1 month ago
committed by GitHub
parent
commit
ddba811d86
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 14
      src/Avalonia.X11/Clipboard/X11Clipboard.cs

14
src/Avalonia.X11/Clipboard/X11Clipboard.cs

@ -55,10 +55,9 @@ namespace Avalonia.X11.Clipboard
_storedDataTransfer = null; _storedDataTransfer = null;
_storeAtomTcs?.TrySetResult(true); _storeAtomTcs?.TrySetResult(true);
return;
} }
if (ev.type == XEventName.SelectionRequest) else if (ev.type == XEventName.SelectionRequest)
{ {
var sel = ev.SelectionRequestEvent; var sel = ev.SelectionRequestEvent;
var resp = new XEvent var resp = new XEvent
@ -83,6 +82,17 @@ namespace Avalonia.X11.Clipboard
XSendEvent(_x11.Display, sel.requestor, false, new IntPtr((int)EventMask.NoEventMask), ref resp); XSendEvent(_x11.Display, sel.requestor, false, new IntPtr((int)EventMask.NoEventMask), ref resp);
} }
else if (ev.type == XEventName.SelectionNotify)
{
if (ev.SelectionEvent.selection == _x11.Atoms.CLIPBOARD_MANAGER &&
ev.SelectionEvent.target == _x11.Atoms.SAVE_TARGETS &&
_x11.Atoms.CLIPBOARD_MANAGER != IntPtr.Zero &&
_x11.Atoms.SAVE_TARGETS != IntPtr.Zero)
{
_storeAtomTcs?.TrySetResult(true);
}
}
IntPtr WriteTargetToProperty(IntPtr target, IntPtr window, IntPtr property) IntPtr WriteTargetToProperty(IntPtr target, IntPtr window, IntPtr property)
{ {
if (target == _x11.Atoms.TARGETS) if (target == _x11.Atoms.TARGETS)

Loading…
Cancel
Save