summaryrefslogtreecommitdiffstats
path: root/Parser/intrcheck.c
diff options
context:
space:
mode:
Diffstat (limited to 'Parser/intrcheck.c')
-rw-r--r--Parser/intrcheck.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c
index 518cc59..827fcdd 100644
--- a/Parser/intrcheck.c
+++ b/Parser/intrcheck.c
@@ -24,11 +24,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
/* Check for interrupts */
-#ifdef THINK_C
-#include <MacHeaders>
-#define macintosh
-#endif
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -36,6 +31,14 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "myproto.h"
#include "intrcheck.h"
+#ifdef macintosh
+#ifdef THINK_C
+#include <OSEvents.h>
+#endif
+#include <Events.h>
+#endif
+
+
#ifdef QUICKWIN
@@ -161,6 +164,28 @@ intrcheck()
return 0;
}
+/* intrpeek() is like intrcheck(), but it doesn't flush the events. The
+** idea is that you call intrpeek() somewhere in a busy-wait loop, and return
+** None as soon as it returns 0. The mainloop will then pick up the cmd-. soon
+** thereafter.
+*/
+int
+intrpeek()
+{
+ register EvQElPtr q;
+
+ q = (EvQElPtr) GetEvQHdr()->qHead;
+
+ for (; q; q = (EvQElPtr)q->qLink) {
+ if (q->evtQWhat == keyDown &&
+ (char)q->evtQMessage == '.' &&
+ (q->evtQModifiers & cmdKey) != 0) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
#define OK
#endif /* macintosh */