From 211c3cace6369b56e4ce7fccb0954df0d381abaf Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Wed, 2 Jan 2019 17:16:51 +0100 Subject: [PATCH] Merge #15000: qt: Fix broken notificator on GNOME c8d9d9093b Fix broken notificator on GNOME (Hennadii Stepanov) Pull request description: Fix #14994; that bug was introduced in #14228 (that was my fault). ~Also this commit explicit separates~ There are two functions of the tray icon: - a system tray widget (`QSystemTrayIcon::isSystemTrayAvailable() == true`) - a high-level notificator via balloon messages (`QSystemTrayIcon::supportsMessages() == true`) ~These properties are mutually independent,~ e.g., on Fedora 29 + GNOME: ``` QSystemTrayIcon::isSystemTrayAvailable() == false; QSystemTrayIcon::supportsMessages() == true; ``` UPDATE: `supportsMessages()` makes no sense without `isSystemTrayAvailable()`: `QSystemTrayIcon::showMessage()` just not working on Fedora 29 + GNOME. Tree-SHA512: 3e75ed2dfcef112bd64b8c329227ae68ba57f3be55769629f4eb3b1c52ef1f33db635f00bb5fd57c25f73a692971d6a847ea14c525f41c594fddde6e970a8ad8 --- src/qt/bitcoingui.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index e98b1e96ebfd6..243060214b6bc 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -134,6 +134,7 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const NetworkStyle* networkStyle, if (QSystemTrayIcon::isSystemTrayAvailable()) { createTrayIcon(networkStyle); } + notificator = new Notificator(QApplication::applicationName(), trayIcon, this); // Create status bar statusBar(); @@ -708,8 +709,7 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel) unitDisplayControl->setOptionsModel(_clientModel->getOptionsModel()); OptionsModel* optionsModel = _clientModel->getOptionsModel(); - if(optionsModel) - { + if (optionsModel && trayIcon) { // be aware of the tray icon disable state change reported by the OptionsModel object. connect(optionsModel,SIGNAL(hideTrayIconChanged(bool)),this,SLOT(setTrayIconVisible(bool))); @@ -835,12 +835,9 @@ void BitcoinGUI::createTrayIcon(const NetworkStyle *networkStyle) { assert(QSystemTrayIcon::isSystemTrayAvailable()); - trayIcon = new QSystemTrayIcon(this); + trayIcon = new QSystemTrayIcon(networkStyle->getTrayAndWindowIcon(), this); QString toolTip = tr("%1 client").arg(tr(PACKAGE_NAME)) + " " + networkStyle->getTitleAddText(); trayIcon->setToolTip(toolTip); - trayIcon->setIcon(networkStyle->getTrayAndWindowIcon()); - trayIcon->hide(); - notificator = new Notificator(QApplication::applicationName(), trayIcon, this); } void BitcoinGUI::createIconMenu(QMenu *pmenu)