Fixed occasional international keyboard problems on OS X thanks to misleading indentation.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6860 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher 2009-09-13 09:53:07 +00:00
parent cec4292c32
commit b863eed5ec
1 changed files with 25 additions and 33 deletions

View File

@ -1496,10 +1496,10 @@ void fl_open_display() {
beenHereDoneThat = 1;
FlushEvents(everyEvent,0);
MoreMasters(); // \todo Carbon suggests MoreMasterPointers()
AEInstallEventHandler( kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP((AEEventHandlerProcPtr)QuitAppleEventHandler), 0, false );
// create the Mac Handle for the default cursor (a pointer to a pointer)
GetQDGlobalsArrow(&default_cursor);
default_cursor_ptr = &default_cursor;
@ -1508,12 +1508,12 @@ void fl_open_display() {
ClearMenuBar();
AppendResMenu( GetMenuHandle( 1 ), 'DRVR' );
DrawMenuBar();
// bring the application into foreground without a 'CARB' resource
Boolean same_psn;
ProcessSerialNumber cur_psn, front_psn;
if( !GetCurrentProcess( &cur_psn ) && !GetFrontProcess( &front_psn ) &&
!SameProcess( &front_psn, &cur_psn, &same_psn ) && !same_psn )
!SameProcess( &front_psn, &cur_psn, &same_psn ) && !same_psn )
{
// only transform the application type for unbundled apps
CFBundleRef bundle = CFBundleGetMainBundle();
@ -1522,35 +1522,16 @@ void fl_open_display() {
FSRef execFs;
CFURLRef execUrl = CFBundleCopyExecutableURL( bundle );
CFURLGetFSRef( execUrl, &execFs );
FSRef bundleFs;
GetProcessBundleLocation( &cur_psn, &bundleFs );
if( !FSCompareFSRefs( &execFs, &bundleFs ) )
bundle = NULL;
CFRelease(execUrl);
}
// imm: keycode handler stub setting - use Gestalt to determine the running system version,
// then set the keycode_function pointer accordingly
SInt32 MacVersion;
if (Gestalt(gestaltSystemVersion, &MacVersion) == noErr)
{
// SInt32 maj, min, fix;
// Gestalt(gestaltSystemVersionMajor, &maj); // e.g. 10
// Gestalt(gestaltSystemVersionMinor, &min); // e.g. 4
// Gestalt(gestaltSystemVersionBugFix, &fix); // e.g. 11
if(MacVersion >= 0x1050) { // 10.5.0 or later
keycode_function = keycodeToUnicode;
}
else {
keycode_function = keycode_wrap_old; // pre-10.5 mechanism
}
}
// else our default handler will be used (keycode_wrap_old)
if( !bundle )
{
// Earlier versions of this code tried to use weak linking, however it
@ -1558,19 +1539,30 @@ void fl_open_display() {
// both TransformProcessType and CPSEnableForegroundOperation, the following
// conditional code compiled on 10.2 will still work on newer releases...
OSErr err;
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
if (TransformProcessType != NULL) {
err = TransformProcessType(&cur_psn, kProcessTransformToForegroundApplication);
} else
err = TransformProcessType(&cur_psn, kProcessTransformToForegroundApplication);
} else
#endif // MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
err = CPSEnableForegroundOperation(&cur_psn, 0x03, 0x3C, 0x2C, 0x1103);
err = CPSEnableForegroundOperation(&cur_psn, 0x03, 0x3C, 0x2C, 0x1103);
if (err == noErr) {
SetFrontProcess( &cur_psn );
SetFrontProcess( &cur_psn );
}
}
}
// imm: keycode handler stub setting - use Gestalt to determine the running system version,
// then set the keycode_function pointer accordingly
keycode_function = keycode_wrap_old; // default to pre-10.5 mechanism
SInt32 MacVersion;
if (Gestalt(gestaltSystemVersion, &MacVersion) == noErr)
{
if(MacVersion >= 0x1050) { // 10.5.0 or later
keycode_function = keycodeToUnicode;
}
}
}
}