summaryrefslogtreecommitdiffstats
path: root/macosx/tkMacOSXEvent.c
diff options
context:
space:
mode:
Diffstat (limited to 'macosx/tkMacOSXEvent.c')
-rw-r--r--macosx/tkMacOSXEvent.c235
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:
- */