summaryrefslogtreecommitdiffstats
path: root/src/linguist/linguist/main.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@nokia.com>2011-07-27 13:47:17 +0200
committerQt by Nokia <qt-info@nokia.com>2011-07-27 16:30:02 +0200
commitb87133c4acb59c21503c341e02e7712eddc790c4 (patch)
treeb7f4c45b315af8e65f0c5323cad54d23f9b9b628 /src/linguist/linguist/main.cpp
parent75250731230f3b21eb49025fe9cb597839ffc775 (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.cpp58
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