diff options
| author | nyx <nnyyxxxx@protonmail.com> | 2025-04-08 11:36:29 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-08 17:36:29 +0200 |
| commit | 642f394eb3f8fd99a51f4c8279497c458c40ba65 (patch) | |
| tree | 7894f0983e672370eaa5b8da84805b6bd0dce963 /src/xwayland/XDataSource.cpp | |
| parent | b15c2bfff6941bd2072eade13177433d7ab58a00 (diff) | |
xwayland: sync primary selection with wayland (#9952)
Diffstat (limited to 'src/xwayland/XDataSource.cpp')
| -rw-r--r-- | src/xwayland/XDataSource.cpp | 8 |
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); |
