mirror of https://github.com/vitalif/openscad
35 lines
902 B
C++
35 lines
902 B
C++
#include <AppleEvents.h>
|
|
#include <MacTypes.h>
|
|
#include <CoreServices/CoreServices.h>
|
|
#include <QApplication>
|
|
#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->actionReloadRenderPreview();
|
|
}
|
|
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); ;
|
|
}
|