diff options
author | jenglish <jenglish@flightlab.com> | 2003-10-15 20:04:02 (GMT) |
---|---|---|
committer | jenglish <jenglish@flightlab.com> | 2003-10-15 20:04:02 (GMT) |
commit | 4c4b8b6c503a4f946ae7b5c6f027f26f61c3c923 (patch) | |
tree | 1ca5c0c724c3e757b0136a7cd9d8db3ac431373c /unix | |
parent | 354cb2f6a16e65c941bfd27988f05cf585b354c9 (diff) | |
download | tk-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.c | 17 |
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; |