From d96125743138b058f620969b166a7a2a2d2893a2 Mon Sep 17 00:00:00 2001 From: hantengc Date: Wed, 12 Aug 2026 14:55:35 +0800 Subject: [PATCH] click the tray icon to pop up the menu --- src/modules/notificationitem/notificationitem.cpp | 6 ++---- src/ui/classic/xcbtraywindow.cpp | 5 ++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/modules/notificationitem/notificationitem.cpp b/src/modules/notificationitem/notificationitem.cpp index 30170a4de..e42356e00 100644 --- a/src/modules/notificationitem/notificationitem.cpp +++ b/src/modules/notificationitem/notificationitem.cpp @@ -76,9 +76,7 @@ class StatusNotifierItem : public dbus::ObjectVTable { deltaAcc_ += 120; } } - void activate(int /*unused*/, int /*unused*/) { - parent_->instance()->toggle(); - } + void activate(int /*unused*/, int /*unused*/) {} void secondaryActivate(int /*unused*/, int /*unused*/) {} std::string keyboardIconName() const { if (isKDE()) { @@ -270,7 +268,7 @@ class StatusNotifierItem : public dbus::ObjectVTable { FCITX_OBJECT_VTABLE_PROPERTY(tooltip, "ToolTip", "(sa(iiay)ss)", [this]() { return tooltip(); }); FCITX_OBJECT_VTABLE_PROPERTY(itemIsMenu, "ItemIsMenu", "b", - []() { return false; }); + []() { return true; }); FCITX_OBJECT_VTABLE_PROPERTY(menu, "Menu", "o", []() { return dbus::ObjectPath("/MenuBar"); }); FCITX_OBJECT_VTABLE_PROPERTY(iconThemePath, "IconThemePath", "s", diff --git a/src/ui/classic/xcbtraywindow.cpp b/src/ui/classic/xcbtraywindow.cpp index 5211a3eeb..f9f3590f4 100644 --- a/src/ui/classic/xcbtraywindow.cpp +++ b/src/ui/classic/xcbtraywindow.cpp @@ -111,15 +111,14 @@ bool XCBTrayWindow::filterEvent(xcb_generic_event_t *event) { case XCB_BUTTON_PRESS: { auto *press = reinterpret_cast(event); if (press->event == wid_) { - if (press->detail == XCB_BUTTON_INDEX_3) { + if (press->detail == XCB_BUTTON_INDEX_1 || + press->detail == XCB_BUTTON_INDEX_3) { updateMenu(); XCBMenu *menu = menuPool_.requestMenu(ui_, &menu_, nullptr); menu->show(Rect() .setPosition(press->root_x, press->root_y) .setSize(1, 1), ConstrainAdjustment::Flip); - } else if (press->detail == XCB_BUTTON_INDEX_1) { - ui_->parent()->instance()->toggle(); } return true; }