summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Parser/intrcheck.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c
index aab940c..96dd484 100644
--- a/Parser/intrcheck.c
+++ b/Parser/intrcheck.c
@@ -141,8 +141,11 @@ initintr()
signal(SIGINT, intcatcher);
}
-int
-intrcheck()
+#ifdef THINK_C
+/* MPW and MW runtime catch cmd-. and raise SIGINT, THINK does not, it seems */
+static void
+scan_event_queue(flush)
+ int flush;
{
register EvQElPtr q;
@@ -152,11 +155,22 @@ intrcheck()
if (q->evtQWhat == keyDown &&
(char)q->evtQMessage == '.' &&
(q->evtQModifiers & cmdKey) != 0) {
- FlushEvents(keyDownMask, 0);
+ if ( flush )
+ FlushEvents(keyDownMask, 0);
interrupted = 1;
break;
}
}
+}
+#endif
+
+int
+intrcheck()
+{
+#ifdef THINK_C
+ scan_event_queue(1);
+#endif
+ PyMac_Yield();
if (interrupted) {
interrupted = 0;
return 1;
@@ -172,18 +186,10 @@ intrcheck()
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;
+#ifdef THINK_C
+ scan_event_queue(0);
+#endif
+ return interrupted;
}
#define OK