|
From: <and...@us...> - 2006-04-17 10:54:09
|
Revision: 1290 Author: andreradke Date: 2006-04-17 03:53:56 -0700 (Mon, 17 Apr 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1290&view=rev Log Message: ----------- Fix handling of suspend/resume events for Intel Macs by replacing the custom tyjugglermessage bit-field with endianness-agnostic code. Modified Paths: -------------- Frontier/trunk/Common/headers/shellprivate.h Frontier/trunk/Common/source/osawindows.c Frontier/trunk/Common/source/shelljuggler.c Modified: Frontier/trunk/Common/headers/shellprivate.h =================================================================== --- Frontier/trunk/Common/headers/shellprivate.h 2006-04-17 05:50:15 UTC (rev 1289) +++ Frontier/trunk/Common/headers/shellprivate.h 2006-04-17 10:53:56 UTC (rev 1290) @@ -63,17 +63,6 @@ } tymenustate; -typedef struct tyjugglermessage { - - long eventtype: 8; /*bits 24 -- 31*/ - - long reservedbits: 22; /*bits 2 -- 23*/ - - long flconvertclipboard: 1; /*bit 1*/ - - long flresume: 1; /*bit 0*/ - } tyjugglermessage; - #ifdef version42orgreater #define cteditors 14 #else Modified: Frontier/trunk/Common/source/osawindows.c =================================================================== --- Frontier/trunk/Common/source/osawindows.c 2006-04-17 05:50:15 UTC (rev 1289) +++ Frontier/trunk/Common/source/osawindows.c 2006-04-17 10:53:56 UTC (rev 1290) @@ -97,13 +97,13 @@ static boolean removewindowsharinghandlers (void); -static pascal ComponentResult -handlewindoweventcommand ( - Handle hglobals, - EventRecord *ev, - tyWindowSharingGlobals *pwsGlobals) -{ -#pragma unused (hglobals) +static pascal ComponentResult handlewindoweventcommand (Handle hglobals, EventRecord *ev, tyWindowSharingGlobals *pwsGlobals) { + + /* + 2006-04-17 aradke: update jugglerEvt case for Intel Macs using endianness-agnostic code + */ + + #pragma unused (hglobals) boolean flcloseallwindows = false; WindowPtr w; @@ -130,10 +130,9 @@ break; case jugglerEvt: { - tyjugglermessage *jmsg = (tyjugglermessage *) &(*ev).message; - if ((*jmsg).eventtype == 1) /*suspend or resume subevent*/ - shellactivatewindow (w, (*jmsg).flresume); + if ((((*ev).message >> 24) & 0xff) == suspendResumeMessage) /*suspend or resume subevent*/ + shellactivatewindow (w, ((*ev).message & resumeFlag) != 0); break; } Modified: Frontier/trunk/Common/source/shelljuggler.c =================================================================== --- Frontier/trunk/Common/source/shelljuggler.c 2006-04-17 05:50:15 UTC (rev 1289) +++ Frontier/trunk/Common/source/shelljuggler.c 2006-04-17 10:53:56 UTC (rev 1290) @@ -93,11 +93,7 @@ } /*shellactivate*/ -static boolean -shelljugglervisit ( - WindowPtr w, - ptrvoid refcon) -{ +static boolean shelljugglervisit (WindowPtr w, ptrvoid refcon) { #pragma unused (refcon) shellpushglobals (w); @@ -116,18 +112,18 @@ 7/13/90 DW: deactivate the front window when we're swapped into the background on a juggler event. activate it when we're swapped back into the foreground. + + 2006-04-17 aradke: updated for Intel Macs using endianness-agnostic code */ register boolean flresume; - tyjugglermessage jmsg; + long message = shellevent.message; - moveleft (&shellevent.message, &jmsg, longsizeof (jmsg)); - - if (jmsg.eventtype == 1) { /*suspend or resume subevent*/ + if (((message >> 24) & 0xff) == suspendResumeMessage) { /*suspend or resume subevent*/ boolean fl; - flresume = jmsg.flresume; /*copy into register*/ + flresume = ((message & resumeFlag) != 0); /*copy into register*/ flshellactive = flresume; /*set global*/ @@ -142,14 +138,20 @@ if (fl) shellactivatewindow (shellwindow, flshellactive); - - if (jmsg.flconvertclipboard) { + + #if !TARGET_API_MAC_CARBON + /* + 2006-04-17 aradke: convertClipboardFlag is never set on Carbon + */ - if (flresume) - ; /*shellreadscrap ()*/ /*12/28/90 dmb: see comment in shellreadscrap*/ - else - shellwritescrap (anyscraptype); - } + if ((message & convertClipboardFlag) != 0) { + + if (flresume) + ; /*shellreadscrap ()*/ /*12/28/90 dmb: see comment in shellreadscrap*/ + else + shellwritescrap (anyscraptype); + } + #endif if (fl) shellpopglobals (); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |