summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openscad.pro5
-rw-r--r--src/CocoaUtils.h10
-rw-r--r--src/CocoaUtils.mm9
-rw-r--r--src/mainwin.cc6
4 files changed, 28 insertions, 2 deletions
diff --git a/openscad.pro b/openscad.pro
index c624b2e..a467820 100644
--- a/openscad.pro
+++ b/openscad.pro
@@ -323,11 +323,12 @@ macx {
src/EventFilter.h \
src/AutoUpdater.h \
src/SparkleAutoUpdater.h \
- src/CocoaInitializer.h
+ src/CocoaInitializer.h \
+ src/CocoaUtils.h
SOURCES += src/AppleEvents.cc \
src/AutoUpdater.cc
OBJECTIVE_SOURCES += src/SparkleAutoUpdater.mm \
- src/CocoaInitializer.mm
+ src/CocoaUtils.mm
}
isEmpty(PREFIX):PREFIX = /usr/local
diff --git a/src/CocoaUtils.h b/src/CocoaUtils.h
new file mode 100644
index 0000000..8543d84
--- /dev/null
+++ b/src/CocoaUtils.h
@@ -0,0 +1,10 @@
+#ifndef COCOAUTILS_H_
+#define COCOAUTILS_H_
+
+class CocoaUtils
+{
+public:
+ static void endApplication();
+};
+
+#endif
diff --git a/src/CocoaUtils.mm b/src/CocoaUtils.mm
new file mode 100644
index 0000000..2ac8aef
--- /dev/null
+++ b/src/CocoaUtils.mm
@@ -0,0 +1,9 @@
+#include "CocoaUtils.h"
+#import <Foundation/Foundation.h>
+
+void CocoaUtils::endApplication()
+{
+ [[NSNotificationCenter defaultCenter]
+ postNotificationName:@"NSApplicationWillTerminateNotification"
+ object:nil];
+}
diff --git a/src/mainwin.cc b/src/mainwin.cc
index a05a4d4..7db7878 100644
--- a/src/mainwin.cc
+++ b/src/mainwin.cc
@@ -49,6 +49,9 @@
#include "ThrownTogetherRenderer.h"
#include "csgtermnormalizer.h"
#include "AutoUpdater.h"
+#ifdef Q_OS_MAC
+#include "CocoaUtils.h"
+#endif
#include <QMenu>
#include <QTime>
@@ -1843,6 +1846,9 @@ void MainWindow::quit()
QApplication::sendEvent(QApplication::instance(), &ev);
if (ev.isAccepted()) QApplication::instance()->quit();
// FIXME: Cancel any CGAL calculations
+#ifdef Q_OS_MAC
+ CocoaUtils::endApplication();
+#endif
}
void MainWindow::consoleOutput(const std::string &msg, void *userdata)
contact: Jan Huwald // Impressum