If the frontmost window is not a Tk window exit the event handling code early. This fixes that using Tk once used to disable cmd-. processing. It may also influence Tk/IDE interaction, I'm not sure.

This commit is contained in:
Jack Jansen 2001-04-03 14:36:35 +00:00
parent c951bf9128
commit 216b8707d9
1 changed files with 23 additions and 1 deletions

View File

@ -82,6 +82,22 @@ static void InitNotifier _ANSI_ARGS_((void));
static void NotifierExitHandler _ANSI_ARGS_((
ClientData clientData));
/*
** Routine to determine whether Tk is the "main event handler" at the moment or
** something else (MacPython, IDE) is.
** Currently we only check that the frontmost window is Tk based, it may be better
** to also check whether we're inside a Tk mainloop().
*/
static int
TkIsTheBoss(void)
{
WindowRef windowRef;
windowRef = FrontWindow();
if ( windowRef && !TkMacGetXWindow(windowRef) ) {
return 0;
}
}
/*
*----------------------------------------------------------------------
*
@ -156,6 +172,8 @@ HandleMacEvents(void)
WindowRef windowRef;
Rect mouseRect;
if ( !TkIsTheBoss() )
return 0;
/*
* Check for mouse moved events. These events aren't placed on the
* system event queue unless we call WaitNextEvent.
@ -191,11 +209,13 @@ HandleMacEvents(void)
*/
while (needsUpdate || (GetEvQHdr()->qHead != NULL)) {
/* Give Python command-. handling a chance */
PyMac_DoYield(0, 0);
GetGlobalMouse(&currentMouse);
SetRect(&mouseRect, currentMouse.h, currentMouse.v,
currentMouse.h + 1, currentMouse.v + 1);
RectRgn(notifier.utilityRgn, &mouseRect);
WaitNextEvent(everyEvent, &theEvent, 5, notifier.utilityRgn);
needsUpdate = 0;
if ((notifier.eventProcPtr != NULL)
@ -327,6 +347,8 @@ Tcl_WaitForEvent(
found = 1;
}
if ( !TkIsTheBoss() )
found = 1;
/*
* Check for window events. We may receive a NULL event for
* various reasons. 1) the timer has expired, 2) a mouse moved