From e7a0945a93321968830e4814c5172192ba332e9c Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Fri, 24 Jul 2026 20:59:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(tray):=20=E6=88=90=E4=B8=BA=20selection=20?= =?UTF-8?q?owner=20=E5=90=8E=E5=B9=BF=E6=92=AD=20MANAGER=20=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E9=80=9A=E7=9F=A5=E6=89=98=E7=9B=98=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/x11/internal.h | 2 ++ src/backend/x11/tray.c | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/backend/x11/internal.h b/src/backend/x11/internal.h index ae5cad1..11fb105 100644 --- a/src/backend/x11/internal.h +++ b/src/backend/x11/internal.h @@ -46,6 +46,8 @@ X(_NET_WM_WINDOW_TYPE_NOTIFICATION) #define ATOM_LIST(X) \ + X(MANAGER) \ + \ X(COMPOUND_TEXT) \ X(UTF8_STRING) \ \ diff --git a/src/backend/x11/tray.c b/src/backend/x11/tray.c index 1748675..7d38572 100644 --- a/src/backend/x11/tray.c +++ b/src/backend/x11/tray.c @@ -191,6 +191,25 @@ static bool tray_take_selection_owner(tray_host_t *tray, backend_t *backend) { return success; } +static void tray_broadcast_manager(tray_host_t *tray, backend_t *backend) { + auto conn = backend->conn; + auto root = backend->screen->root; + + xcb_client_message_event_t event = { + .response_type = XCB_CLIENT_MESSAGE, + .window = root, + .format = 32, + .type = backend->atoms.MANAGER, + .data.data32 = { + [0] = XCB_CURRENT_TIME, + [1] = tray->selection_atom, + [2] = tray->container, + }, + }; + uint32_t event_mask = XCB_EVENT_MASK_STRUCTURE_NOTIFY; + xcb_send_event(conn, false, root, event_mask, (char *)&event); +} + void tray_init( backend_t *backend, xcb_window_t host_window, @@ -220,4 +239,7 @@ void tray_init( tray->enabled = true; tray->initialized = true; + + tray_broadcast_manager(tray, backend); + xcb_flush(backend->conn); }