- 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.
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 @@
 	*/
 	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 @@
 {
 	MenuHandle applemenu;
 	
+	if ( sioux_mbar ) return;
 	if ( (sioux_mbar=GetMenuBar()) == NULL )  {
 		/* Sioux menu not installed yet. Do so */
 		SIOUXSetupMenus();
@@ -784,7 +787,7 @@
 void
 PyMac_RestoreMenuBar()
 {
-#if 0
+#if 1
 	/* This doesn't seem to work anymore? Or only for Carbon? */
 	MenuBarHandle curmenubar;
 	
@@ -799,6 +802,19 @@
 #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_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 @@
 		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 @@
 	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 @@
 	if ( !initialized ) Initialize();
 	GUSIStdioFlush();
 	PyMac_OutputSeen();
+	PyMac_RaiseConsoleWindow();
 	return buffer.SetLength(
 		ReadCharsFromConsole((char *) buffer.Buffer(), (int)buffer.Length()));
 	GUSIContext::Yield(kGUSIPoll);