summaryrefslogtreecommitdiffstats
path: root/generic/tkCanvWind.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tkCanvWind.c')
-rw-r--r--generic/tkCanvWind.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/generic/tkCanvWind.c b/generic/tkCanvWind.c
index 5950f32..752dc00 100644
--- a/generic/tkCanvWind.c
+++ b/generic/tkCanvWind.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvWind.c,v 1.12 2005/11/04 15:23:05 dkf Exp $
+ * RCS: @(#) $Id: tkCanvWind.c,v 1.13 2006/05/12 18:17:48 das Exp $
*/
#include <stdio.h>
@@ -581,7 +581,12 @@ DisplayWinItem(
if (state == TK_STATE_NULL) {
state = ((TkCanvas *)canvas)->canvas_state;
}
- if (state == TK_STATE_HIDDEN) {
+
+ /*
+ * A drawable of None is used by the canvas UnmapNotify handler
+ * to indicate that we should no longer display ourselves.
+ */
+ if (state == TK_STATE_HIDDEN || drawable == None) {
if (canvasTkwin == Tk_Parent(winItemPtr->tkwin)) {
Tk_UnmapWindow(winItemPtr->tkwin);
} else {
@@ -1031,8 +1036,14 @@ WinItemRequestProc(
WindowItem *winItemPtr = (WindowItem *) clientData;
ComputeWindowBbox(winItemPtr->canvas, winItemPtr);
+
+ /*
+ * A drawable argument of None to DisplayWinItem is used by the canvas
+ * UnmapNotify handler to indicate that we should no longer display
+ * ourselves, so need to pass a (bogus) non-zero drawable value here.
+ */
DisplayWinItem(winItemPtr->canvas, (Tk_Item *) winItemPtr, NULL,
- (Drawable) None, 0, 0, 0, 0);
+ (Drawable) -1, 0, 0, 0, 0);
}
/*