]> Git Repo - VerusCoin.git/commitdiff
fix: GUI Disappearing #1522 (Mac OSX)
authorJonas Schnelli <[email protected]>
Sun, 14 Apr 2013 20:11:55 +0000 (22:11 +0200)
committerJonas Schnelli <[email protected]>
Mon, 15 Apr 2013 10:02:01 +0000 (12:02 +0200)
- this solution works stable on mac and ensures that the window get's reopened when the user clicks the dock icon .
- tested on 10.8 with Qt4.8.4 and Qt5.0.1

Signed-off-by: Jonas Schnelli <[email protected]>
src/qt/bitcoingui.cpp
src/qt/macdockiconhandler.h
src/qt/macdockiconhandler.mm

index 14d738d9dae7e563762bfa36d7478693492e5a2a..f6ea945c79b21a39f40db1ef3a29afa873d70ad8 100644 (file)
@@ -155,6 +155,7 @@ BitcoinGUI::~BitcoinGUI()
         trayIcon->hide();
 #ifdef Q_OS_MAC
     delete appMenuBar;
+    MacDockIconHandler::instance()->setMainWindow(NULL);
 #endif
 }
 
@@ -382,6 +383,7 @@ void BitcoinGUI::createTrayIconMenu()
 #else
     // Note: On Mac, the dock icon is used to provide the tray's functionality.
     MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance();
+    dockIconHandler->setMainWindow((QMainWindow *)this);
     trayIconMenu = dockIconHandler->dockMenu();
 #endif
 
index 5018456aa19950a4c99e5b402263a20786d1ab79..765b0047507ecaac45a063ae9907363dc2062548 100644 (file)
@@ -2,6 +2,7 @@
 #define MACDOCKICONHANDLER_H
 
 #include <QObject>
+#include <QMainWindow>
 
 QT_BEGIN_NAMESPACE
 class QMenu;
@@ -26,7 +27,7 @@ public:
 
     QMenu *dockMenu();
     void setIcon(const QIcon &icon);
-
+    void setMainWindow(QMainWindow *window);
     static MacDockIconHandler *instance();
 
     void handleDockIconClickEvent();
@@ -40,6 +41,7 @@ private:
     DockIconClickEventHandler *m_dockIconClickEventHandler;
     QWidget *m_dummyWidget;
     QMenu *m_dockMenu;
+    QMainWindow *mainWindow;
 };
 
 #endif // MACDOCKICONCLICKHANDLER_H
index ea868401c09e263f800e61af08636d5a7ef22e6f..b6ea8e1d03dce4d1add2333e1feb9543f5b797d2 100644 (file)
@@ -37,8 +37,9 @@ extern void qt_mac_set_dock_menu(QMenu*);
     Q_UNUSED(event)
     Q_UNUSED(replyEvent)
 
-    if (dockIconHandler)
+    if (dockIconHandler) {
         dockIconHandler->handleDockIconClickEvent();
+    }
 }
 
 @end
@@ -54,10 +55,15 @@ MacDockIconHandler::MacDockIconHandler() : QObject()
     [pool release];
 }
 
+void MacDockIconHandler::setMainWindow(QMainWindow *window) {
+    this->mainWindow = window;
+}
+
 MacDockIconHandler::~MacDockIconHandler()
 {
     [this->m_dockIconClickEventHandler release];
     delete this->m_dummyWidget;
+    this->setMainWindow(NULL);
 }
 
 QMenu *MacDockIconHandler::dockMenu()
@@ -94,5 +100,8 @@ MacDockIconHandler *MacDockIconHandler::instance()
 
 void MacDockIconHandler::handleDockIconClickEvent()
 {
+    this->mainWindow->activateWindow();
+    this->mainWindow->show();
+
     emit this->dockIconClicked();
 }
This page took 0.030779 seconds and 4 git commands to generate.