summaryrefslogtreecommitdiff
path: root/src/xwayland/XDataSource.cpp
diff options
context:
space:
mode:
authornyx <nnyyxxxx@protonmail.com>2025-04-08 11:36:29 -0400
committerGitHub <noreply@github.com>2025-04-08 17:36:29 +0200
commit642f394eb3f8fd99a51f4c8279497c458c40ba65 (patch)
tree7894f0983e672370eaa5b8da84805b6bd0dce963 /src/xwayland/XDataSource.cpp
parentb15c2bfff6941bd2072eade13177433d7ab58a00 (diff)
xwayland: sync primary selection with wayland (#9952)
Diffstat (limited to 'src/xwayland/XDataSource.cpp')
-rw-r--r--src/xwayland/XDataSource.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/xwayland/XDataSource.cpp b/src/xwayland/XDataSource.cpp
index 003f6c9f..14656d8b 100644
--- a/src/xwayland/XDataSource.cpp
+++ b/src/xwayland/XDataSource.cpp
@@ -77,7 +77,13 @@ void CXDataSource::send(const std::string& mime, CFileDescriptor fd) {
xcb_create_window(g_pXWayland->pWM->connection, XCB_COPY_FROM_PARENT, transfer->incomingWindow, g_pXWayland->pWM->screen->root, 0, 0, 10, 10, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
g_pXWayland->pWM->screen->root_visual, XCB_CW_EVENT_MASK, &MASK);
- xcb_convert_selection(g_pXWayland->pWM->connection, transfer->incomingWindow, HYPRATOMS["CLIPBOARD"], mimeAtom, HYPRATOMS["_WL_SELECTION"], XCB_TIME_CURRENT_TIME);
+ xcb_atom_t selection_atom = HYPRATOMS["CLIPBOARD"];
+ if (&selection == &g_pXWayland->pWM->primarySelection)
+ selection_atom = HYPRATOMS["PRIMARY"];
+ else if (&selection == &g_pXWayland->pWM->dndSelection)
+ selection_atom = HYPRATOMS["XdndSelection"];
+
+ xcb_convert_selection(g_pXWayland->pWM->connection, transfer->incomingWindow, selection_atom, mimeAtom, HYPRATOMS["_WL_SELECTION"], XCB_TIME_CURRENT_TIME);
xcb_flush(g_pXWayland->pWM->connection);