diff options
author | jenglish <jenglish@flightlab.com> | 2002-12-27 21:23:03 (GMT) |
---|---|---|
committer | jenglish <jenglish@flightlab.com> | 2002-12-27 21:23:03 (GMT) |
commit | 9c5a098a155068a728d1af4451ec854dacfd071f (patch) | |
tree | 7533506d51f38061141e64e9dee26073d69c4cf0 | |
parent | c2326802ed8c5c19836ca7ef9c7d75106105e24c (diff) | |
download | tk-9c5a098a155068a728d1af4451ec854dacfd071f.zip tk-9c5a098a155068a728d1af4451ec854dacfd071f.tar.gz tk-9c5a098a155068a728d1af4451ec854dacfd071f.tar.bz2 |
WaitForEvent(): process Map and Unmap events
as well as Configure events during WaitFor{Configure|Map}Notify.
Fixes [Bug 578569] (WaitForMapNotify could process Map and Unmap
events out of order, making Tk think a window was unmapped when
it really wasn't).
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | unix/tkUnixWm.c | 22 |
2 files changed, 20 insertions, 9 deletions
@@ -1,3 +1,10 @@ +2002-12-27 Joe English <jenglish@users.sourceforge.net> + * unix/tkUnixWm.c (WaitForEvent): process Map and Unmap events + as well as Configure events during WaitFor{Configure|Map}Notify. + Fixes [Bug 578569] (WaitForMapNotify could process Map and Unmap + events out of order, making Tk think a window was unmapped when + it really wasn't). + 2002-12-18 Todd M. Helfter <tmh@purdue.edu> * doc/label.n: Fixed documentation of the -compound option to the label widget. The option was simply missing from the diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c index f8d1a73..2a87d26 100644 --- a/unix/tkUnixWm.c +++ b/unix/tkUnixWm.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixWm.c,v 1.35 2002/12/01 23:37:53 mdejong Exp $ + * RCS: @(#) $Id: tkUnixWm.c,v 1.36 2002/12/27 21:23:04 jenglish Exp $ */ #include "tkPort.h" @@ -4281,8 +4281,9 @@ UpdateSizeHints(winPtr) * operations outstanding at a time (e.g. two different resizes * of the top-level window: it's hard to tell which of the * ConfigureNotify events coming back is for which request). - * While waiting, all events covered by StructureNotifyMask are - * processed and all others are deferred. + * While waiting, some events covered by StructureNotifyMask are + * processed (ConfigureNotify, MapNotify, and UnmapNotify) + * and all others are deferred. * *---------------------------------------------------------------------- */ @@ -4348,8 +4349,9 @@ WaitForConfigureNotify(winPtr, serial) * arrive, then TCL_ERROR is returned. * * Side effects: - * While waiting for the desired event to occur, Configurenotify - * events for window are processed, as are all ReparentNotify events, + * While waiting for the desired event to occur, Configurenotify, + * MapNotify, and UnmapNotify events for window are processed, + * as are all ReparentNotify events. * *---------------------------------------------------------------------- */ @@ -4407,8 +4409,8 @@ WaitForEvent(display, wmInfoPtr, type, eventPtr) * Results: * Returns TK_PROCESS_EVENT if the right event is found. Also * returns TK_PROCESS_EVENT if any ReparentNotify event is found - * for window or if the event is a ConfigureNotify for window. - * Otherwise returns TK_DEFER_EVENT. + * or if the event is a ConfigureNotify, MapNotify, or UnmapNotify + * for window. Otherwise returns TK_DEFER_EVENT. * * Side effects: * An event may get stored in the area indicated by the caller @@ -4437,7 +4439,9 @@ WaitRestrictProc(clientData, eventPtr) infoPtr->foundEvent = 1; return TK_PROCESS_EVENT; } - if (eventPtr->type == ConfigureNotify) { + if (eventPtr->type == ConfigureNotify + || eventPtr->type == MapNotify + || eventPtr->type == UnmapNotify) { return TK_PROCESS_EVENT; } return TK_DEFER_EVENT; @@ -4463,7 +4467,7 @@ WaitRestrictProc(clientData, eventPtr) * manager first starts managing the window (as opposed to those * requested interactively by the user later). See the comments * for WaitForConfigureNotify and WM_SYNC_PENDING. While waiting, - * all events covered by StructureNotifyMask are processed and all + * some events covered by StructureNotifyMask are processed and all * others are deferred. * *---------------------------------------------------------------------- |