summaryrefslogtreecommitdiff
path: root/src/AppleEvents.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/AppleEvents.cc')
-rw-r--r--src/AppleEvents.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/AppleEvents.cc b/src/AppleEvents.cc
new file mode 100644
index 0000000..470c4f3
--- /dev/null
+++ b/src/AppleEvents.cc
@@ -0,0 +1,32 @@
+#include <Carbon/Carbon.h>
+#include <QApplication.h>
+#include "MainWindow.h"
+
+extern "C" {
+ OSErr eventHandler(const AppleEvent *ev, AppleEvent *reply, SRefCon refcon);
+}
+
+OSErr eventHandler(const AppleEvent *, AppleEvent *, SRefCon )
+{
+// FIXME: Ugly hack; just using the first MainWindow we can find
+ MainWindow *mainwin = NULL;
+ foreach (QWidget *w, QApplication::topLevelWidgets()) {
+ mainwin = qobject_cast<MainWindow*>(w);
+ if (mainwin) break;
+ }
+ if (mainwin) {
+ mainwin->actionReloadCompile();
+ }
+ return noErr;
+}
+
+void installAppleEventHandlers()
+{
+ // Reload handler
+ OSErr err = AEInstallEventHandler('SCAD', 'relo', NewAEEventHandlerUPP(eventHandler), 0, true);
+ require_noerr(err, CantInstallAppleEventHandler);
+ return;
+
+CantInstallAppleEventHandler:
+ fprintf(stderr, "AEInstallEventHandler() failed: %d\n", err); ;
+}
contact: Jan Huwald // Impressum