From ee5bd70d3278711a933d39094f3b69d61aeae5e2 Mon Sep 17 00:00:00 2001 From: yeshanshan Date: Wed, 22 Apr 2026 18:30:36 +0800 Subject: [PATCH] fix: disable menu scroll indicator in application tray plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Removed scroll indicator functionality in QMenu submenus to prevent display issues 2. Added private Qt headers to access QMenuPrivate and disable scrolling 3. Adjusted window positioning logic for popup sub-windows Log: Disabled menu scroll indicator in application tray to fix display issues Influence: 1. Test application tray menu display without scroll indicators 2. Verify sub-menu opening behavior and positioning 3. Test popup window positioning for wayland integration 4. Verify menu size and layout correctness 5. Test on different screen resolutions and scaling factors fix: 禁止托盘菜单滚动指示器功能 1. 移除 QMenu 子菜单的滚动指示器功能,解决显示问题 2. 添加 Qt 私有头文件以访问 QMenuPrivate 并禁用滚动 3. 调整弹出子窗口的定位逻辑 Log: 禁用托盘菜单滚动指示器以修复显示问题 Influence: 1. 测试托盘菜单显示,确认无滚动指示器 2. 验证子菜单打开行为和定位 3. 测试 wayland 集成下的弹出窗口定位 4. 验证菜单尺寸和布局正确性 5. 在不同屏幕分辨率和缩放比例下测试 PMS: BUG-333243 --- plugins/application-tray/CMakeLists.txt | 2 ++ plugins/application-tray/sniprotocolhandler.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/plugins/application-tray/CMakeLists.txt b/plugins/application-tray/CMakeLists.txt index d067196fd..14db09618 100644 --- a/plugins/application-tray/CMakeLists.txt +++ b/plugins/application-tray/CMakeLists.txt @@ -72,6 +72,8 @@ target_link_libraries(${PLUGIN_NAME} Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::CorePrivate + Qt${QT_VERSION_MAJOR}::WidgetsPrivate Dtk${DTK_VERSION_MAJOR}::Core Dtk${DTK_VERSION_MAJOR}::Gui Dtk${DTK_VERSION_MAJOR}::Widget diff --git a/plugins/application-tray/sniprotocolhandler.cpp b/plugins/application-tray/sniprotocolhandler.cpp index 4ad5d6e13..abe71a3db 100644 --- a/plugins/application-tray/sniprotocolhandler.cpp +++ b/plugins/application-tray/sniprotocolhandler.cpp @@ -17,6 +17,8 @@ #include #include +#include +#include DGUI_USE_NAMESPACE @@ -32,6 +34,12 @@ class DBusMenu : public DBusMenuImporter { { QObject::connect(this, &DBusMenuImporter::menuUpdated, this, [this] (QMenu *menu) { menu->setFixedSize(menu->sizeHint()); + // TODO 删除 QMenu 的滚动功能,修复首次子菜单显示滚动指示器问题 + if (auto dp = static_cast(QObjectPrivate::get(menu))) { + if (auto scroll = dp->scroll) { + scroll->scrollFlags = QMenuPrivate::QMenuScroller::ScrollNone; + } + } }, Qt::QueuedConnection); } virtual QMenu *createMenu(QWidget *parent) override