diff options
author | Eike Ziller <eike.ziller@nokia.com> | 2011-07-27 13:47:17 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-27 16:30:02 +0200 |
commit | b87133c4acb59c21503c341e02e7712eddc790c4 (patch) | |
tree | b7f4c45b315af8e65f0c5323cad54d23f9b9b628 /src/linguist/linguist/main.cpp | |
parent | 75250731230f3b21eb49025fe9cb597839ffc775 (diff) |
Document support for Linguist on Mac.
Fixes dragging documents on Linguist dock icon, double clicking document
in Finder, and the "open" terminal command.
(cherry-picked from 80c5ea1a99e0c7794245e53175c949597315c96f)
Task-number: QTBUG-20194
Change-Id: Ice077ca397c6274f48e6911434a71c9934e42142
Reviewed-by: Oswald Buddenhagen
Reviewed-on: http://codereview.qt.nokia.com/2282
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'src/linguist/linguist/main.cpp')
-rw-r--r-- | src/linguist/linguist/main.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/linguist/linguist/main.cpp b/src/linguist/linguist/main.cpp index a137f36b4..ba45613e0 100644 --- a/src/linguist/linguist/main.cpp +++ b/src/linguist/linguist/main.cpp @@ -54,8 +54,54 @@ #include <QtGui/QPixmap> #include <QtGui/QSplashScreen> +#ifdef Q_WS_MAC +#include <QtCore/QUrl> +#include <QtGui/QFileOpenEvent> +#endif // Q_WS_MAC + QT_USE_NAMESPACE +#ifdef Q_WS_MAC +class ApplicationEventFilter : public QObject +{ + Q_OBJECT + +public: + ApplicationEventFilter() + : m_mainWindow(0) + { + } + + void setMainWindow(MainWindow *mw) + { + m_mainWindow = mw; + if (!m_filesToOpen.isEmpty() && m_mainWindow) { + m_mainWindow->openFiles(m_filesToOpen); + m_filesToOpen.clear(); + } + } + +protected: + bool eventFilter(QObject *object, QEvent *event) + { + if (object == qApp && event->type() == QEvent::FileOpen) { + QFileOpenEvent *e = static_cast<QFileOpenEvent*>(event); + QString file = e->url().toLocalFile(); + if (!m_mainWindow) + m_filesToOpen << file; + else + m_mainWindow->openFiles(QStringList() << file); + return true; + } + return QObject::eventFilter(object, event); + } + +private: + MainWindow *m_mainWindow; + QStringList m_filesToOpen; +}; +#endif // Q_WS_MAC + int main(int argc, char **argv) { Q_INIT_RESOURCE(linguist); @@ -63,6 +109,11 @@ int main(int argc, char **argv) QApplication app(argc, argv); QApplication::setOverrideCursor(Qt::WaitCursor); +#ifdef Q_WS_MAC + ApplicationEventFilter eventFilter; + app.installEventFilter(&eventFilter); +#endif // Q_WS_MAC + QStringList files; QString resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); QStringList args = app.arguments(); @@ -111,6 +162,9 @@ int main(int argc, char **argv) splash->show(); MainWindow mw; +#ifdef Q_WS_MAC + eventFilter.setMainWindow(&mw); +#endif // Q_WS_MAC mw.show(); splash->finish(&mw); QApplication::restoreOverrideCursor(); @@ -119,3 +173,7 @@ int main(int argc, char **argv) return app.exec(); } + +#ifdef Q_WS_MAC +#include "main.moc" +#endif // Q_WS_MAC |