From ceb40b434d98ab8746c761ca746fb265afa3516c Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Tue, 28 Jul 2026 05:34:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(tray):=20=E4=BF=AE=E5=A4=8D=20tray=20?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E4=B8=8D=E8=83=BD=20reparent=20=E5=88=B0=20c?= =?UTF-8?q?ontainer=20=E7=AA=97=E5=8F=A3=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/x11/tray.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/backend/x11/tray.c b/src/backend/x11/tray.c index f1eef4a..495731d 100644 --- a/src/backend/x11/tray.c +++ b/src/backend/x11/tray.c @@ -251,15 +251,31 @@ static bool tray_create_container_window( ) { auto conn = backend->conn; auto window_id = xcb_generate_id(conn); + auto depth = backend->screen->root_depth; + auto visual_id = backend->screen->root_visual; + static xcb_colormap_t colormap = XCB_NONE; + if (colormap == XCB_NONE) { + colormap = xcb_generate_id(conn); + auto root = backend->screen->root; + uint8_t alloc = XCB_COLORMAP_ALLOC_NONE; + xcb_create_colormap(conn, alloc, colormap, root, visual_id); + } + + uint32_t value_mask = XCB_CW_BACK_PIXEL | XCB_CW_BORDER_PIXEL | + XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK | + XCB_CW_COLORMAP; xcb_create_window_value_list_t value_list = { + .background_pixel = 0, + .border_pixel = 0, .override_redirect = true, .event_mask = - XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_STRUCTURE_NOTIFY + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_STRUCTURE_NOTIFY, + .colormap = colormap, }; auto cookie = xcb_create_window_aux_checked( conn, - XCB_COPY_FROM_PARENT, + depth, window_id, host_window.window, (int16_t)host_window.width, @@ -268,8 +284,8 @@ static bool tray_create_container_window( (uint16_t)MAX(1, host_window.height), 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, - XCB_COPY_FROM_PARENT, - XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK, + visual_id, + value_mask, &value_list );