summaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorjenglish <jenglish@flightlab.com>2003-10-15 20:04:02 (GMT)
committerjenglish <jenglish@flightlab.com>2003-10-15 20:04:02 (GMT)
commit4c4b8b6c503a4f946ae7b5c6f027f26f61c3c923 (patch)
tree1ca5c0c724c3e757b0136a7cd9d8db3ac431373c /unix
parent354cb2f6a16e65c941bfd27988f05cf585b354c9 (diff)
downloadtk-4c4b8b6c503a4f946ae7b5c6f027f26f61c3c923.zip
tk-4c4b8b6c503a4f946ae7b5c6f027f26f61c3c923.tar.gz
tk-4c4b8b6c503a4f946ae7b5c6f027f26f61c3c923.tar.bz2
Delete WM_TRANSIENT_FOR property instead of setting it to None
when making a window nontransient [Bug #632816 "cannot remove transient"]
Diffstat (limited to 'unix')
-rw-r--r--unix/tkUnixWm.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
index 5721b02..0d535ea 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.37 2003/03/12 00:25:41 mdejong Exp $
+ * RCS: @(#) $Id: tkUnixWm.c,v 1.38 2003/10/15 20:04:03 jenglish Exp $
*/
#include "tkPort.h"
@@ -866,8 +866,8 @@ TkWmDeadWindow(winPtr)
WmWaitMapProc, (ClientData) wmPtr2->winPtr);
wmPtr2->masterPtr = NULL;
if (!(wmPtr2->flags & WM_NEVER_MAPPED)) {
- XSetTransientForHint(wmPtr2->winPtr->display,
- wmPtr2->wrapperPtr->window, None);
+ XDeleteProperty(winPtr->display, wmPtr2->wrapperPtr->window,
+ Tk_InternAtom((Tk_Window) winPtr, "WM_TRANSIENT_FOR"));
/* FIXME: Need a call like Win32's UpdateWrapper() so
we can recreate the wrapper and get rid of the
transient window decorations. */
@@ -3084,10 +3084,13 @@ WmTransientCmd(tkwin, winPtr, interp, objc, objv)
return TCL_ERROR;
}
} else {
- Window xwin = (wmPtr->masterPtr == NULL) ? None :
- wmPtr->masterPtr->wmInfoPtr->wrapperPtr->window;
- XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window,
- xwin);
+ if (wmPtr->masterPtr != NULL) {
+ XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window,
+ wmPtr->masterPtr->wmInfoPtr->wrapperPtr->window);
+ } else {
+ XDeleteProperty(winPtr->display, wmPtr->wrapperPtr->window,
+ Tk_InternAtom((Tk_Window)winPtr, "WM_TRANSIENT_FOR"));
+ }
}
}
return TCL_OK;