diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2001-04-25 22:07:27 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2001-04-25 22:07:27 (GMT) |
commit | 15f1c08d96da1792548d2e3cf17ebd7dd9ba078e (patch) | |
tree | 3a00bcd0b7ff7cae2ab0c08003f2198d36b80207 | |
parent | ee677913df35c8c4c5ea91e3c85a3061f01bb26d (diff) | |
download | cpython-15f1c08d96da1792548d2e3cf17ebd7dd9ba078e.zip cpython-15f1c08d96da1792548d2e3cf17ebd7dd9ba078e.tar.gz cpython-15f1c08d96da1792548d2e3cf17ebd7dd9ba078e.tar.bz2 |
- Raise console window on input. Fixes Carbon hang.
- Better handling of menu bar save/restore.
- Override abort() so it honours the "keep console window" flag.
-rw-r--r-- | Mac/Python/macglue.c | 22 | ||||
-rw-r--r-- | Mac/Python/macmain.c | 12 | ||||
-rw-r--r-- | Mac/Python/pyGUSISIOUX.cp | 2 |
3 files changed, 32 insertions, 4 deletions
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c index 52bc225..5579735 100644 --- a/Mac/Python/macglue.c +++ b/Mac/Python/macglue.c @@ -685,11 +685,13 @@ PyMac_DoYield(int maxsleep, int maycallpython) */ if( in_here > 1 || !schedparams.process_events || (python_event_handler && !maycallpython) ) { -#if !TARGET_API_MAC_CARBON if ( maxsleep >= 0 ) { +#if !TARGET_API_MAC_CARBON SystemTask(); - } +#else + int xxx = 0; #endif + } } else { latest_time_ready = LMGetTicks() + maxsleep; do { @@ -768,6 +770,7 @@ PyMac_InitMenuBar() { MenuHandle applemenu; + if ( sioux_mbar ) return; if ( (sioux_mbar=GetMenuBar()) == NULL ) { /* Sioux menu not installed yet. Do so */ SIOUXSetupMenus(); @@ -784,7 +787,7 @@ PyMac_InitMenuBar() void PyMac_RestoreMenuBar() { -#if 0 +#if 1 /* This doesn't seem to work anymore? Or only for Carbon? */ MenuBarHandle curmenubar; @@ -799,6 +802,19 @@ PyMac_RestoreMenuBar() #endif } +void +PyMac_RaiseConsoleWindow() +{ + /* Note: this is a hack. SIOUXTextWindow is SIOUX's internal structure + ** and we happen to know that the first entry is the window pointer. + */ + extern WindowRef *SIOUXTextWindow; + + if ( SIOUXTextWindow == NULL || *SIOUXTextWindow == NULL ) + return; + if ( FrontWindow() != *SIOUXTextWindow ) + BringToFront(*SIOUXTextWindow); +} /* ** Our replacement about box diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c index bb798f2..1d5500f 100644 --- a/Mac/Python/macmain.c +++ b/Mac/Python/macmain.c @@ -567,7 +567,16 @@ PyMac_OutputNotSeen() PyMac_InitMenuBar(); console_output_state = STATE_LASTWRITE; } - + +/* +** Override abort() - The default one is not what we want. +*/ +void +abort() +{ + console_output_state = STATE_LASTWRITE; + PyMac_Exit(1); +} /* ** Terminate application @@ -605,6 +614,7 @@ PyMac_Exit(status) SIOUXSettings.standalone = 1; SIOUXSettings.autocloseonquit = 0; SIOUXSetTitle("\p\307terminated\310"); + PyMac_RaiseConsoleWindow(); PyMac_RestoreMenuBar(); #ifdef USE_MSL /* diff --git a/Mac/Python/pyGUSISIOUX.cp b/Mac/Python/pyGUSISIOUX.cp index 795e10e..f26216b 100644 --- a/Mac/Python/pyGUSISIOUX.cp +++ b/Mac/Python/pyGUSISIOUX.cp @@ -102,6 +102,7 @@ GUSISIOUXSocket::Initialize() GUSISetHook(GUSI_EventHook+diskEvt, (GUSIHook)SIOUXHandleOneEvent); GUSISetHook(GUSI_EventHook+activateEvt, (GUSIHook)SIOUXHandleOneEvent); GUSISetHook(GUSI_EventHook+osEvt, (GUSIHook)SIOUXHandleOneEvent); + PyMac_InitMenuBar(); } GUSISIOUXSocket::~GUSISIOUXSocket() { @@ -113,6 +114,7 @@ ssize_t GUSISIOUXSocket::read(const GUSIScatterer & buffer) if ( !initialized ) Initialize(); GUSIStdioFlush(); PyMac_OutputSeen(); + PyMac_RaiseConsoleWindow(); return buffer.SetLength( ReadCharsFromConsole((char *) buffer.Buffer(), (int)buffer.Length())); GUSIContext::Yield(kGUSIPoll); |