Front page | perl.perl5.changes.mac |
Postings from November 2002
Change 18195: Work around weird startup Apple events (Matthias, MacPerl Bug #543491)
From:
Chris Nandor
Date:
November 28, 2002 13:36
Subject:
Change 18195: Work around weird startup Apple events (Matthias, MacPerl Bug #543491)
Message ID:
p05200f16ba0c3c30dab0@[10.0.1.104]
Change 18195 by pudge@pudge-mobile on 2002/11/28 03:38:25
Work around weird startup Apple events (Matthias, MacPerl Bug #543491)
Affected files ...
.... //depot/maint-5.6/macperl/macos/macperl/MPAppleEvents.c#6 edit
.... //depot/maint-5.6/macperl/macos/macperl/MPAppleEvents.h#2 edit
.... //depot/maint-5.6/macperl/macos/macperl/MPMain.c#6 edit
Differences ...
==== //depot/maint-5.6/macperl/macos/macperl/MPAppleEvents.c#6 (text) ====
Index: macperl/macos/macperl/MPAppleEvents.c
--- macperl/macos/macperl/MPAppleEvents.c#5~14932~ Fri Mar 1 09:32:02 2002
+++ macperl/macos/macperl/MPAppleEvents.c Wed Nov 27 19:38:25 2002
@@ -9,6 +9,9 @@
Language : MPW C
$Log: MPAppleEvents.c,v $
+Revision 1.7 2002/10/30 06:53:15 neeri
+Work around weird startup AppleEvents (MacPerl Bug #543491)
+
Revision 1.6 2002/03/01 04:24:59 pudge
Various bugfixes from Thomas Wegner
@@ -412,24 +415,6 @@
DoQuit(saveOpt);
return myErr;
-}
-
-/**-----------------------------------------------------------------------
- Name: DoAppleEvent
- Purpose: Process and despatch the AppleEvent
- -----------------------------------------------------------------------**/
-
-#if !defined(powerc) && !defined(__powerc)
-#pragma segment Main
-#endif
-
-pascal void DoAppleEvent(EventRecord theEvent)
-{
- OSErr err;
-
- /*should check for your own event message types here - if you have any*/
-
- err = AEProcessAppleEvent(&theEvent);
}
/**-----------------------------------------------------------------------
==== //depot/maint-5.6/macperl/macos/macperl/MPAppleEvents.h#2 (text) ====
Index: macperl/macos/macperl/MPAppleEvents.h
--- macperl/macos/macperl/MPAppleEvents.h#1~11243~ Mon Jul 9 15:16:12 2001
+++ macperl/macos/macperl/MPAppleEvents.h Wed Nov 27 19:38:25 2002
@@ -9,6 +9,9 @@
Language : MPW C
$Log: MPAppleEvents.h,v $
+Revision 1.2 2002/10/30 06:53:15 neeri
+Work around weird startup AppleEvents (MacPerl Bug #543491)
+
Revision 1.1 2000/11/30 08:37:28 neeri
Sources & Resources
@@ -62,7 +65,6 @@
pascal Boolean AllSelected(TEHandle te);
pascal void InitAppleEvents(void);
-pascal void DoAppleEvent(EventRecord theEvent);
pascal OSErr MakeSelfAddress(AEAddressDesc *selfAddress);
pascal OSErr MakeSelfPSN(ProcessSerialNumber *selfPSN);
==== //depot/maint-5.6/macperl/macos/macperl/MPMain.c#6 (text) ====
Index: macperl/macos/macperl/MPMain.c
--- macperl/macos/macperl/MPMain.c#5~14126~ Mon Jan 7 14:23:06 2002
+++ macperl/macos/macperl/MPMain.c Wed Nov 27 19:38:25 2002
@@ -9,6 +9,9 @@
Language : MPW C
$Log: MPMain.c,v $
+Revision 1.8 2002/10/30 06:53:15 neeri
+Work around weird startup AppleEvents (MacPerl Bug #543491)
+
Revision 1.7 2002/01/07 08:09:36 neeri
Eliminate nested calls to exit() (MacPerl bug #469132)
@@ -1058,6 +1061,41 @@
static short deferredWr = 0;
static WindowPtr deferredWindow = 0;
static RgnHandle mouseRgn;
+static EventRecord sDeferredEvent;
+static Boolean sHasDeferredEvent;
+
+#if !defined(powerc) && !defined(__powerc)
+#pragma segment Main
+#endif
+
+pascal void DoAppleEvent(EventRecord * ev)
+{
+ static Boolean sFirstHighLevelEvent = true;
+
+ if (sFirstHighLevelEvent) {
+ /* If some weirdo starts a runtime with a weird AppleEvent, we simulate an oapp */
+ sFirstHighLevelEvent = false;
+ if (gRuntimeScript) {
+ if ((OSType)ev->message != kCoreEventClass
+ || (*(OSType *)&ev->where != kAEOpenApplication && *(OSType *)&ev->where != kAEOpenDocuments)
+ ) {
+ AEDesc desc;
+
+ /* Send this event around the event loop again */
+ sDeferredEvent = *ev;
+ sHasDeferredEvent = true;
+
+ /* Call DoScript */
+ AECreateDesc(typeNull, nil , 0, &desc);
+ DoScript(&desc, &desc, 0);
+
+ return;
+ }
+ }
+ }
+
+ AEProcessAppleEvent(ev);
+}
#if !defined(powerc) && !defined(__powerc)
#pragma segment MPMain
@@ -1067,7 +1105,7 @@
{
char theChar;
Boolean activate;
- Point mouse;
+ Point mouse;
WindowPtr theWindow;
DPtr theDoc;
@@ -1137,7 +1175,7 @@
case kHighLevelEvent:
FlushAndRecordTypingBuffer();
- DoAppleEvent(*myEvent);
+ DoAppleEvent(myEvent);
if (gDelayedScript.dataHandle) {
AppleEvent awakenedScript = gDelayedScript;
@@ -1168,9 +1206,6 @@
}
}
}
-
-static EventRecord sDeferredEvent;
-static Boolean sHasDeferredEvent;
void MainEvent(Boolean busy, long sleep, RgnHandle rgn)
{
End of Patch.
-
Change 18195: Work around weird startup Apple events (Matthias, MacPerl Bug #543491)
by Chris Nandor