]> granicus.if.org Git - python/commitdiff
Handle systemclicks ourselves, in stead of passing them to Sioux. This
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 26 Aug 1997 13:20:34 +0000 (13:20 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 26 Aug 1997 13:20:34 +0000 (13:20 +0000)
fixes (or masks?) a bug with Python becoming unreactive during
time.sleep() if you have already switched applications before.

Mac/Python/macglue.c

index 04e6bbb4cd8f55def83b73a501c336115332fdc1..50b89e253130bb24f42e11d7b893dc923a5dd6a0 100644 (file)
@@ -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 <signal.h>
 
@@ -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 )