Skip to content

Commit

Permalink
Merge #14594: qt: Fix minimized window bug on Linux
Browse files Browse the repository at this point in the history
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
  • Loading branch information
laanwj committed Jan 15, 2019
2 parents 1b6fc30 + a88640e commit a5daf70
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
10 changes: 5 additions & 5 deletions src/qt/bitcoingui.cpp
Expand Up @@ -35,6 +35,7 @@
#include <util/system.h>

#include <iostream>
#include <memory>

#include <QAction>
#include <QApplication>
Expand All @@ -43,6 +44,7 @@
#include <QDesktopWidget>
#include <QDragEnterEvent>
#include <QListWidget>
#include <QMenu>
#include <QMenuBar>
#include <QMessageBox>
#include <QMimeData>
Expand All @@ -52,6 +54,7 @@
#include <QStackedWidget>
#include <QStatusBar>
#include <QStyle>
#include <QSystemTrayIcon>
#include <QTimer>
#include <QToolBar>
#include <QUrlQuery>
Expand All @@ -72,6 +75,7 @@ const std::string BitcoinGUI::DEFAULT_UIPLATFORM =
BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformStyle, const NetworkStyle *networkStyle, QWidget *parent) :
QMainWindow(parent),
m_node(node),
trayIconMenu{new QMenu()},
platformStyle(_platformStyle)
{
QSettings settings;
Expand Down Expand Up @@ -657,16 +661,12 @@ void BitcoinGUI::createTrayIconMenu()
if (!trayIcon)
return;

trayIconMenu = new QMenu(this);
trayIcon->setContextMenu(trayIconMenu);

trayIcon->setContextMenu(trayIconMenu.get());
connect(trayIcon, &QSystemTrayIcon::activated, this, &BitcoinGUI::trayIconActivated);
#else
// Note: On macOS, the Dock icon is used to provide the tray's functionality.
MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance();
connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, this, &BitcoinGUI::macosDockIconActivated);

trayIconMenu = new QMenu(this);
trayIconMenu->setAsDockMenu();
#endif

Expand Down
4 changes: 2 additions & 2 deletions src/qt/bitcoingui.h
Expand Up @@ -16,7 +16,6 @@
#include <QLabel>
#include <QMainWindow>
#include <QMap>
#include <QMenu>
#include <QPoint>
#include <QSystemTrayIcon>

Expand Down Expand Up @@ -47,6 +46,7 @@ class Node;
QT_BEGIN_NAMESPACE
class QAction;
class QComboBox;
class QMenu;
class QProgressBar;
class QProgressDialog;
QT_END_NAMESPACE
Expand Down Expand Up @@ -146,7 +146,7 @@ class BitcoinGUI : public QMainWindow
QComboBox* m_wallet_selector = nullptr;

QSystemTrayIcon* trayIcon = nullptr;
QMenu* trayIconMenu = nullptr;
const std::unique_ptr<QMenu> trayIconMenu;
Notificator* notificator = nullptr;
RPCConsole* rpcConsole = nullptr;
HelpMessageDialog* helpMessageDialog = nullptr;
Expand Down

0 comments on commit a5daf70

Please sign in to comment.