OS X: Restore main window when clicking on the docker icon.

Apparently this worked previously. Maybe a regression in Qt?

Refs #326
This commit is contained in:
Felix Geyer 2015-10-10 17:00:50 +02:00
parent 840642394f
commit 58ed99d562
3 changed files with 21 additions and 0 deletions

View File

@ -24,9 +24,15 @@
Application::Application(int& argc, char** argv)
: QApplication(argc, argv)
, m_mainWindow(Q_NULLPTR)
{
}
void Application::setMainWindow(QWidget* mainWindow)
{
m_mainWindow = mainWindow;
}
bool Application::event(QEvent* event)
{
// Handle Apple QFileOpenEvent from finder (double click on .kdbx file)
@ -34,6 +40,16 @@ bool Application::event(QEvent* event)
Q_EMIT openFile(static_cast<QFileOpenEvent*>(event)->file());
return true;
}
#ifdef Q_OS_MAC
// restore main window when clicking on the docker icon
else if ((event->type() == QEvent::ApplicationActivate) && m_mainWindow) {
m_mainWindow->ensurePolished();
m_mainWindow->setWindowState(m_mainWindow->windowState() & ~Qt::WindowMinimized);
m_mainWindow->show();
m_mainWindow->raise();
m_mainWindow->activateWindow();
}
#endif
return QApplication::event(event);
}

View File

@ -29,6 +29,7 @@ class Application : public QApplication
public:
Application(int& argc, char** argv);
void setMainWindow(QWidget* mainWindow);
bool event(QEvent* event) Q_DECL_OVERRIDE;
#ifdef Q_WS_X11
@ -37,6 +38,9 @@ public:
Q_SIGNALS:
void openFile(const QString& filename);
private:
QWidget* m_mainWindow;
};
#endif // KEEPASSX_APPLICATION_H

View File

@ -82,6 +82,7 @@ int main(int argc, char** argv)
MainWindow mainWindow;
mainWindow.show();
app.setMainWindow(&mainWindow);
QObject::connect(&app, SIGNAL(openFile(QString)), &mainWindow, SLOT(openDatabase(QString)));