Skip to content

Commit a5daf70

Browse files
committed
Merge #14594: qt: Fix minimized window bug on Linux
a88640e Fix minimized window bug on Linux (Hennadii Stepanov) Pull request description: Fix #14591 On some Linux systems the minimized to the taskbar (iconified) main window cannot be restored properly using actions from the systray icon menu when `QSystemTrayIcon::contextMenu()` is a child of the main window. Tree-SHA512: 05c9f724fc2278d45dac6fe72b09859f12b5d71f54659bb779403c8cd81b55e610fb7b5aa912ac273d3cd19bf953b0405bbc6451feb00d1827c95dd9f0876aa4
2 parents 1b6fc30 + a88640e commit a5daf70

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/qt/bitcoingui.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <util/system.h>
3636

3737
#include <iostream>
38+
#include <memory>
3839

3940
#include <QAction>
4041
#include <QApplication>
@@ -43,6 +44,7 @@
4344
#include <QDesktopWidget>
4445
#include <QDragEnterEvent>
4546
#include <QListWidget>
47+
#include <QMenu>
4648
#include <QMenuBar>
4749
#include <QMessageBox>
4850
#include <QMimeData>
@@ -52,6 +54,7 @@
5254
#include <QStackedWidget>
5355
#include <QStatusBar>
5456
#include <QStyle>
57+
#include <QSystemTrayIcon>
5558
#include <QTimer>
5659
#include <QToolBar>
5760
#include <QUrlQuery>
@@ -72,6 +75,7 @@ const std::string BitcoinGUI::DEFAULT_UIPLATFORM =
7275
BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformStyle, const NetworkStyle *networkStyle, QWidget *parent) :
7376
QMainWindow(parent),
7477
m_node(node),
78+
trayIconMenu{new QMenu()},
7579
platformStyle(_platformStyle)
7680
{
7781
QSettings settings;
@@ -657,16 +661,12 @@ void BitcoinGUI::createTrayIconMenu()
657661
if (!trayIcon)
658662
return;
659663

660-
trayIconMenu = new QMenu(this);
661-
trayIcon->setContextMenu(trayIconMenu);
662-
664+
trayIcon->setContextMenu(trayIconMenu.get());
663665
connect(trayIcon, &QSystemTrayIcon::activated, this, &BitcoinGUI::trayIconActivated);
664666
#else
665667
// Note: On macOS, the Dock icon is used to provide the tray's functionality.
666668
MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance();
667669
connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, this, &BitcoinGUI::macosDockIconActivated);
668-
669-
trayIconMenu = new QMenu(this);
670670
trayIconMenu->setAsDockMenu();
671671
#endif
672672

src/qt/bitcoingui.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include <QLabel>
1717
#include <QMainWindow>
1818
#include <QMap>
19-
#include <QMenu>
2019
#include <QPoint>
2120
#include <QSystemTrayIcon>
2221

@@ -47,6 +46,7 @@ class Node;
4746
QT_BEGIN_NAMESPACE
4847
class QAction;
4948
class QComboBox;
49+
class QMenu;
5050
class QProgressBar;
5151
class QProgressDialog;
5252
QT_END_NAMESPACE
@@ -146,7 +146,7 @@ class BitcoinGUI : public QMainWindow
146146
QComboBox* m_wallet_selector = nullptr;
147147

148148
QSystemTrayIcon* trayIcon = nullptr;
149-
QMenu* trayIconMenu = nullptr;
149+
const std::unique_ptr<QMenu> trayIconMenu;
150150
Notificator* notificator = nullptr;
151151
RPCConsole* rpcConsole = nullptr;
152152
HelpMessageDialog* helpMessageDialog = nullptr;

0 commit comments

Comments
 (0)