summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2004-05-13 14:29:22 (GMT)
committerdgp <dgp@users.sourceforge.net>2004-05-13 14:29:22 (GMT)
commit1f0d6cd2ed1b8fdacb8cd04b501a9aec83c635f4 (patch)
tree3b1fd2d56ea5eb63bceaabd63e57cac50334d99b /generic
parent68627b70d1bc24286b0af9a1780c9e87716d0790 (diff)
downloadtk-1f0d6cd2ed1b8fdacb8cd04b501a9aec83c635f4.zip
tk-1f0d6cd2ed1b8fdacb8cd04b501a9aec83c635f4.tar.gz
tk-1f0d6cd2ed1b8fdacb8cd04b501a9aec83c635f4.tar.bz2
* generic/tkBind.c <HandleEventGenerate>: Modified to fix wish
crach due to incorrectly generate <Destroy> event. This bug was reported in comp.lang.tcl but not logged.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkBind.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/generic/tkBind.c b/generic/tkBind.c
index 13e6cea..978f8ee 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkBind.c,v 1.28.2.1 2004/02/18 02:17:18 hobbs Exp $
+ * RCS: @(#) $Id: tkBind.c,v 1.28.2.2 2004/05/13 14:29:22 dgp Exp $
*/
#include "tkPort.h"
@@ -3392,6 +3392,14 @@ HandleEventGenerate(interp, mainWin, objc, objv)
event.xany.display = Tk_Display(tkwin);
flags = flagArray[event.xany.type];
+ if (flags & DESTROY) {
+ /*
+ * Event DesotryNotify should be generated by destroying
+ * the window.
+ */
+ Tk_DestroyWindow(tkwin);
+ return TCL_OK;
+ }
if (flags & (KEY_BUTTON_MOTION_VIRTUAL)) {
event.xkey.state = pat.needMods;
if ((flags & KEY) && (event.xany.type != MouseWheelEvent)) {
@@ -3402,7 +3410,7 @@ HandleEventGenerate(interp, mainWin, objc, objv)
((XVirtualEvent *) &event)->name = pat.detail.name;
}
}
- if (flags & (CREATE|DESTROY|UNMAP|MAP|REPARENT|CONFIG|GRAVITY|CIRC)) {
+ if (flags & (CREATE|UNMAP|MAP|REPARENT|CONFIG|GRAVITY|CIRC)) {
event.xcreatewindow.window = event.xany.window;
}
@@ -3767,7 +3775,7 @@ HandleEventGenerate(interp, mainWin, objc, objv)
if (NameToWindow(interp, tkwin, valuePtr, &tkwin2) != TCL_OK) {
return TCL_ERROR;
}
- if (flags & (CREATE|DESTROY|UNMAP|MAP|REPARENT|CONFIG
+ if (flags & (CREATE|UNMAP|MAP|REPARENT|CONFIG
|GRAVITY|CIRC)) {
event.xcreatewindow.window = Tk_WindowId(tkwin2);
} else {