summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2001-04-25 22:07:27 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2001-04-25 22:07:27 (GMT)
commit15f1c08d96da1792548d2e3cf17ebd7dd9ba078e (patch)
tree3a00bcd0b7ff7cae2ab0c08003f2198d36b80207 /Mac
parentee677913df35c8c4c5ea91e3c85a3061f01bb26d (diff)
downloadcpython-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.
Diffstat (limited to 'Mac')
-rw-r--r--Mac/Python/macglue.c22
-rw-r--r--Mac/Python/macmain.c12
-rw-r--r--Mac/Python/pyGUSISIOUX.cp2
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);