diff options
Diffstat (limited to 'client/x11/platform.cpp')
-rw-r--r-- | client/x11/platform.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/client/x11/platform.cpp b/client/x11/platform.cpp index ea2558d7..75b34c61 100644 --- a/client/x11/platform.cpp +++ b/client/x11/platform.cpp @@ -3342,5 +3342,18 @@ bool Platform::on_clipboard_request(uint32_t type) void Platform::on_clipboard_release() { + XEvent event; + XSetSelectionOwner(x_display, clipboard_prop, None, CurrentTime); + /* Make sure we process the XFixesSetSelectionOwnerNotify event caused + by this, so we don't end up changing the clipboard owner to none, after + it has already been re-owned because this event is still pending. */ + XSync(x_display, False); + while (XCheckTypedEvent(x_display, + XFixesSelectionNotify + xfixes_event_base, + &event)) + root_win_proc(event); + + /* Note no need to do a set_clipboard_owner(owner_none) here, as that is + already done by processing the XFixesSetSelectionOwnerNotify event. */ } |