Kaydet (Commit) 216b8707 authored tarafından Jack Jansen's avatar Jack Jansen

If the frontmost window is not a Tk window exit the event handling code early.…

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.
üst c951bf91
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment