From 0c96887d35d75782a6455f82b0c754e6b6e218ca Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 26 Aug 1997 13:20:34 +0000 Subject: [PATCH] Handle systemclicks ourselves, in stead of passing them to Sioux. This fixes (or masks?) a bug with Python becoming unreactive during time.sleep() if you have already switched applications before. --- Mac/Python/macglue.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c index 04e6bbb4cd8..50b89e25313 100644 --- a/Mac/Python/macglue.c +++ b/Mac/Python/macglue.c @@ -92,7 +92,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ** handle them). Note that we don't know who has windows open, so ** even handing updates off to SIOUX under MW isn't going to work. */ -#define MAINLOOP_EVENTMASK (mDownMask|keyDownMask|osMask) +#define MAINLOOP_EVENTMASK (mDownMask|keyDownMask|osMask|activMask) #include @@ -476,6 +476,14 @@ void PyMac_HandleEventIntern(evp) EventRecord *evp; { + if ( evp->what == mouseDown ) { + WindowPtr wp; + + if ( FindWindow(evp->where, &wp) == inSysWindow ) { + SystemClick(evp, wp); + return; + } + } #ifdef __MWERKS__ { int siouxdidit; @@ -486,15 +494,7 @@ PyMac_HandleEventIntern(evp) return; } #else - /* Other compilers are just unlucky: we only weed out clicks in other applications */ - if ( evp->what == mouseDown ) { - WindowPtr wp; - - if ( FindWindow(evp->where, &wp) == inSysWindow ) { - SystemClick(evp, wp); - return; - } - } + /* Other compilers are just unlucky... */ #endif /* !__MWERKS__ */ } @@ -557,6 +557,11 @@ PyMac_DoYield(int maxsleep, int maycallpython) } else { latest_time_ready = LMGetTicks() + maxsleep; while ( maxsleep >= 0 ) { + /* XXXX Hack by Jack. + ** In time.sleep() you can click to another application + ** once only. If you come back to Python you cannot get away + ** again. + **/ gotone = WaitNextEvent(schedparams.process_events, &ev, maxsleep, NULL); /* Get out quickly if nothing interesting is happening */ if ( !gotone || ev.what == nullEvent )