diff options
| author | Vladimir Belyavsky <belyavskyv@gmail.com> | 2023-11-12 20:06:19 +0300 |
|---|---|---|
| committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-11-12 18:45:16 +0000 |
| commit | c1d389a132d291fb404bef11de3c1b45dbfa2afc (patch) | |
| tree | a8eb5f93da933ed368b8203c8652f84cd988b9db /src/widgets/util/qsystemtrayicon.cpp | |
| parent | 7a7aecae2ac7ae411e5e3a719f82cd1a0e7fe5ee (diff) | |
QSystemTrayIcon: Allow resetting context menu
Fix logic in QSystemTrayIconPrivate::updateMenu_sys() to allow resetting
the tray icon menu. Now we correctly handle `nullptr` menu, and update
the underlying QPlatformSystemTrayIcon instance accordingly.
Also we bail out from QSystemTrayIcon::setContextMenu() early if the
menu is the same.
Fixes: QTBUG-119068
Pick-to: 6.6 6.5
Change-Id: I704b40dfb1a3046331aef65417655411bf3a41a0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/widgets/util/qsystemtrayicon.cpp')
| -rw-r--r-- | src/widgets/util/qsystemtrayicon.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp index 7acbf273457..4794cde6ad1 100644 --- a/src/widgets/util/qsystemtrayicon.cpp +++ b/src/widgets/util/qsystemtrayicon.cpp @@ -162,9 +162,13 @@ void QSystemTrayIcon::setContextMenu(QMenu *menu) { Q_D(QSystemTrayIcon); QMenu *oldMenu = d->menu.data(); + if (oldMenu == menu) + return; + d->menu = menu; d->updateMenu_sys(); - if (oldMenu != menu && d->qpa_sys) { + + if (d->qpa_sys) { // Show the QMenu-based menu for QPA plugins that do not provide native menus if (oldMenu && !oldMenu->platformMenu()) QObject::disconnect(d->qpa_sys, &QPlatformSystemTrayIcon::contextMenuRequested, menu, nullptr); |
