diff options
Diffstat (limited to 'macosx/tkMacOSXEvent.c')
-rw-r--r-- | macosx/tkMacOSXEvent.c | 235 |
1 files changed, 116 insertions, 119 deletions
diff --git a/macosx/tkMacOSXEvent.c b/macosx/tkMacOSXEvent.c index dd90d6e..b94606e 100644 --- a/macosx/tkMacOSXEvent.c +++ b/macosx/tkMacOSXEvent.c @@ -1,4 +1,4 @@ -/* +/* * tkMacOSXEvent.c -- * * This file contains the basic Mac OS X Event handling routines. @@ -7,23 +7,23 @@ * Copyright 2001, Apple Computer, Inc. * Copyright (c) 2005-2006 Daniel A. Steffen <das@users.sourceforge.net> * - * See the file "license.terms" for information on usage and redistribution of - * this file, and for a DISCLAIMER OF ALL WARRANTIES. + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.13 2007/04/13 14:51:18 dkf Exp $ + * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.14 2007/04/21 19:06:38 hobbs Exp $ */ #include "tkMacOSXInt.h" #include "tkMacOSXEvent.h" #include "tkMacOSXDebug.h" - + /* *---------------------------------------------------------------------- * * TkMacOSXFlushWindows -- * - * This routine flushes all the Carbon windows of the application. It is - * called by the setup procedure for the Tcl/Carbon event source. + * This routine flushes all the Carbon windows of the application. It + * is called by the setup procedure for the Tcl/Carbon event source. * * Results: * None. @@ -35,10 +35,10 @@ */ MODULE_SCOPE void -TkMacOSXFlushWindows(void) +TkMacOSXFlushWindows () { WindowRef wRef = GetWindowList(); - + while (wRef) { CGrafPtr portPtr = GetWindowPort(wRef); if (QDIsPortBuffered(portPtr)) { @@ -48,61 +48,62 @@ TkMacOSXFlushWindows(void) } } -/* +/* *---------------------------------------------------------------------- - * + * * TkMacOSXProcessEvent -- - * + * * This dispatches a filtered Carbon event to the appropriate handler * * Note on MacEventStatus.stopProcessing: Please be conservative in the - * individual handlers and don't assume the event is fully handled unless - * you *really* need to ensure that other handlers don't see the event - * anymore. Some OS manager or library might be interested in events even - * after they are already handled on the Tk level. + * individual handlers and don't assume the event is fully handled + * unless you *really* need to ensure that other handlers don't see the + * event anymore. Some OS manager or library might be interested in + * events even after they are already handled on the Tk level. * - * Results: + * Results: * 0 on success * -1 on failure * * Side effects: * Converts a Carbon event to a Tk event - * + * *---------------------------------------------------------------------- */ -MODULE_SCOPE int -TkMacOSXProcessEvent( - TkMacOSXEvent *eventPtr, - MacEventStatus *statusPtr) +MODULE_SCOPE int +TkMacOSXProcessEvent(TkMacOSXEvent * eventPtr, MacEventStatus * statusPtr) { switch (eventPtr->eClass) { - case kEventClassMouse: - TkMacOSXProcessMouseEvent(eventPtr, statusPtr); - break; - case kEventClassWindow: - TkMacOSXProcessWindowEvent(eventPtr, statusPtr); - break; - case kEventClassKeyboard: - TkMacOSXProcessKeyboardEvent(eventPtr, statusPtr); - break; - case kEventClassApplication: - TkMacOSXProcessApplicationEvent(eventPtr, statusPtr); - break; - case kEventClassMenu: - TkMacOSXProcessMenuEvent(eventPtr, statusPtr); - break; - case kEventClassCommand: - TkMacOSXProcessCommandEvent(eventPtr, statusPtr); - break; - default: { - char buf[256]; - - LOG_MSG("Unrecognised event : %s\n", - TkMacOSXCarbonEventToAscii(eventPtr->eventRef, buf)); - break; - } - } + case kEventClassMouse: + TkMacOSXProcessMouseEvent(eventPtr, statusPtr); + break; + case kEventClassWindow: + TkMacOSXProcessWindowEvent(eventPtr, statusPtr); + break; + case kEventClassKeyboard: + TkMacOSXProcessKeyboardEvent(eventPtr, statusPtr); + break; + case kEventClassApplication: + TkMacOSXProcessApplicationEvent(eventPtr, statusPtr); + break; + case kEventClassMenu: + TkMacOSXProcessMenuEvent(eventPtr, statusPtr); + break; + case kEventClassCommand: + TkMacOSXProcessCommandEvent(eventPtr, statusPtr); + break; + default: +#ifdef TK_MAC_DEBUG + { + char buf [256]; + fprintf(stderr, + "Unrecognised event : %s\n", + TkMacOSXCarbonEventToAscii(eventPtr->eventRef, buf)); + } +#endif + break; + } return 0; } @@ -111,8 +112,8 @@ TkMacOSXProcessEvent( * * TkMacOSXProcessMenuEvent -- * - * This routine processes the event in eventPtr, and generates the - * appropriate Tk events from it. + * This routine processes the event in eventPtr, and + * generates the appropriate Tk events from it. * * Results: * True if event(s) are generated - false otherwise. @@ -124,37 +125,37 @@ TkMacOSXProcessEvent( */ MODULE_SCOPE int -TkMacOSXProcessMenuEvent( - TkMacOSXEvent *eventPtr, - MacEventStatus *statusPtr) +TkMacOSXProcessMenuEvent(TkMacOSXEvent *eventPtr, MacEventStatus * statusPtr) { - int menuContext; - OSStatus status; + int menuContext; + OSStatus status; switch (eventPtr->eKind) { - case kEventMenuBeginTracking: - case kEventMenuEndTracking: - break; - default: - return 0; - break; + case kEventMenuBeginTracking: + case kEventMenuEndTracking: + break; + default: + return 0; + break; } - status = GetEventParameter(eventPtr->eventRef, kEventParamMenuContext, - typeUInt32, NULL, sizeof(menuContext), NULL, &menuContext); + status = GetEventParameter(eventPtr->eventRef, + kEventParamMenuContext, + typeUInt32, NULL, + sizeof(menuContext), NULL, + &menuContext); if (status == noErr && (menuContext & kMenuContextMenuBar)) { static int oldMode = TCL_SERVICE_ALL; - if (eventPtr->eKind == kEventMenuBeginTracking) { oldMode = Tcl_SetServiceMode(TCL_SERVICE_ALL); TkMacOSXClearMenubarActive(); - + /* * Handle -postcommand */ - + TkMacOSXPreprocessMenu(); } else { - Tcl_SetServiceMode(oldMode); + Tcl_SetServiceMode(oldMode); } } return 0; @@ -165,8 +166,8 @@ TkMacOSXProcessMenuEvent( * * TkMacOSXProcessCommandEvent -- * - * This routine processes the event in eventPtr, and generates the - * appropriate Tk events from it. + * This routine processes the event in eventPtr, and + * generates the appropriate Tk events from it. * * Results: * True if event(s) are generated - false otherwise. @@ -178,29 +179,32 @@ TkMacOSXProcessMenuEvent( */ MODULE_SCOPE int -TkMacOSXProcessCommandEvent( - TkMacOSXEvent *eventPtr, - MacEventStatus *statusPtr) +TkMacOSXProcessCommandEvent(TkMacOSXEvent *eventPtr, MacEventStatus * statusPtr) { - HICommand command; - int menuContext; - OSStatus status; + HICommand command; + int menuContext; + OSStatus status; switch (eventPtr->eKind) { - case kEventCommandProcess: - case kEventCommandUpdateStatus: - break; - default: - return 0; - break; + case kEventCommandProcess: + case kEventCommandUpdateStatus: + break; + default: + return 0; + break; } - status = GetEventParameter(eventPtr->eventRef, kEventParamDirectObject, - typeHICommand, NULL, sizeof(command), NULL, &command); + status = GetEventParameter(eventPtr->eventRef, + kEventParamDirectObject, + typeHICommand, NULL, + sizeof(command), NULL, + &command); if (status == noErr && (command.attributes & kHICommandFromMenu)) { if (eventPtr->eKind == kEventCommandProcess) { - status = GetEventParameter(eventPtr->eventRef, - kEventParamMenuContext, typeUInt32, NULL, - sizeof(menuContext), NULL, &menuContext); + status = GetEventParameter(eventPtr->eventRef, + kEventParamMenuContext, + typeUInt32, NULL, + sizeof(menuContext), NULL, + &menuContext); if (status == noErr && (menuContext & kMenuContextMenuBar) && (menuContext & kMenuContextMenuBarTracking)) { TkMacOSXHandleMenuSelect(GetMenuID(command.menu.menuRef), @@ -208,26 +212,26 @@ TkMacOSXProcessCommandEvent( GetCurrentEventKeyModifiers() & optionKey); return 1; } - } else if (command.commandID == kHICommandPreferences - && eventPtr->interp) { + } else { Tcl_CmdInfo dummy; - - if (Tcl_GetCommandInfo(eventPtr->interp, - "::tk::mac::ShowPreferences", &dummy)) { - if (!IsMenuItemEnabled(command.menu.menuRef, - command.menu.menuItemIndex)) { - EnableMenuItem(command.menu.menuRef, - command.menu.menuItemIndex); - } - } else { - if (IsMenuItemEnabled(command.menu.menuRef, - command.menu.menuItemIndex)) { - DisableMenuItem(command.menu.menuRef, - command.menu.menuItemIndex); + if (command.commandID == kHICommandPreferences && eventPtr->interp) { + if (Tcl_GetCommandInfo(eventPtr->interp, + "::tk::mac::ShowPreferences", &dummy)) { + if (!IsMenuItemEnabled(command.menu.menuRef, + command.menu.menuItemIndex)) { + EnableMenuItem(command.menu.menuRef, + command.menu.menuItemIndex); + } + } else { + if (IsMenuItemEnabled(command.menu.menuRef, + command.menu.menuItemIndex)) { + DisableMenuItem(command.menu.menuRef, + command.menu.menuItemIndex); + } } + statusPtr->stopProcessing = 1; + return 1; } - statusPtr->stopProcessing = 1; - return 1; } } return 0; @@ -252,17 +256,17 @@ TkMacOSXProcessCommandEvent( */ MODULE_SCOPE OSStatus -TkMacOSXReceiveAndProcessEvent(void) +TkMacOSXReceiveAndProcessEvent() { static EventTargetRef targetRef = NULL; EventRef eventRef; OSStatus err; /* - * This is a poll, since we have already counted the events coming into - * this routine, and are guaranteed to have one waiting. + * This is a poll, since we have already counted the events coming + * into this routine, and are guaranteed to have one waiting. */ - + err = ReceiveNextEvent(0, NULL, kEventDurationNoWait, true, &eventRef); if (err == noErr) { if (!targetRef) { @@ -273,10 +277,11 @@ TkMacOSXReceiveAndProcessEvent(void) TkMacOSXStopTclEventLoopCarbonTimer(); #ifdef TK_MAC_DEBUG if (err != noErr && err != eventLoopTimedOutErr - && err != eventNotHandledErr) { - char buf[256]; - - ERR_MSG("RCNE SendEventToEventTarget (%s) failed, %d", + && err != eventNotHandledErr + ) { + char buf [256]; + fprintf(stderr, + "RCNE SendEventToEventTarget (%s) failed, %d\n", TkMacOSXCarbonEventToAscii(eventRef, buf), (int)err); } #endif @@ -284,11 +289,3 @@ TkMacOSXReceiveAndProcessEvent(void) } return err; } - -/* - * Local Variables: - * mode: c - * c-basic-offset: 4 - * fill-column: 78 - * End: - */ |