trayIcon->hide();
#ifdef Q_OS_MAC
delete appMenuBar;
+ MacDockIconHandler::instance()->setMainWindow(NULL);
#endif
}
#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
#define MACDOCKICONHANDLER_H
#include <QObject>
+#include <QMainWindow>
QT_BEGIN_NAMESPACE
class QMenu;
QMenu *dockMenu();
void setIcon(const QIcon &icon);
-
+ void setMainWindow(QMainWindow *window);
static MacDockIconHandler *instance();
void handleDockIconClickEvent();
DockIconClickEventHandler *m_dockIconClickEventHandler;
QWidget *m_dummyWidget;
QMenu *m_dockMenu;
+ QMainWindow *mainWindow;
};
#endif // MACDOCKICONCLICKHANDLER_H
Q_UNUSED(event)
Q_UNUSED(replyEvent)
- if (dockIconHandler)
+ if (dockIconHandler) {
dockIconHandler->handleDockIconClickEvent();
+ }
}
@end
[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()
void MacDockIconHandler::handleDockIconClickEvent()
{
+ this->mainWindow->activateWindow();
+ this->mainWindow->show();
+
emit this->dockIconClicked();
}