Skip to content

Commit a88640e

Browse files
committed
Fix minimized window bug on Linux
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.
1 parent c651265 commit a88640e

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
@@ -36,6 +36,7 @@
3636
#include <util/system.h>
3737

3838
#include <iostream>
39+
#include <memory>
3940

4041
#include <QAction>
4142
#include <QApplication>
@@ -44,6 +45,7 @@
4445
#include <QDesktopWidget>
4546
#include <QDragEnterEvent>
4647
#include <QListWidget>
48+
#include <QMenu>
4749
#include <QMenuBar>
4850
#include <QMessageBox>
4951
#include <QMimeData>
@@ -53,6 +55,7 @@
5355
#include <QStackedWidget>
5456
#include <QStatusBar>
5557
#include <QStyle>
58+
#include <QSystemTrayIcon>
5659
#include <QTimer>
5760
#include <QToolBar>
5861
#include <QUrlQuery>
@@ -73,6 +76,7 @@ const std::string BitcoinGUI::DEFAULT_UIPLATFORM =
7376
BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformStyle, const NetworkStyle *networkStyle, QWidget *parent) :
7477
QMainWindow(parent),
7578
m_node(node),
79+
trayIconMenu{new QMenu()},
7680
platformStyle(_platformStyle)
7781
{
7882
QSettings settings;
@@ -610,16 +614,12 @@ void BitcoinGUI::createTrayIconMenu()
610614
if (!trayIcon)
611615
return;
612616

613-
trayIconMenu = new QMenu(this);
614-
trayIcon->setContextMenu(trayIconMenu);
615-
617+
trayIcon->setContextMenu(trayIconMenu.get());
616618
connect(trayIcon, &QSystemTrayIcon::activated, this, &BitcoinGUI::trayIconActivated);
617619
#else
618620
// Note: On macOS, the Dock icon is used to provide the tray's functionality.
619621
MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance();
620622
connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, this, &BitcoinGUI::macosDockIconActivated);
621-
622-
trayIconMenu = new QMenu(this);
623623
trayIconMenu->setAsDockMenu();
624624
#endif
625625

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
@@ -141,7 +141,7 @@ class BitcoinGUI : public QMainWindow
141141
QComboBox* m_wallet_selector = nullptr;
142142

143143
QSystemTrayIcon* trayIcon = nullptr;
144-
QMenu* trayIconMenu = nullptr;
144+
const std::unique_ptr<QMenu> trayIconMenu;
145145
Notificator* notificator = nullptr;
146146
RPCConsole* rpcConsole = nullptr;
147147
HelpMessageDialog* helpMessageDialog = nullptr;

0 commit comments

Comments
 (0)