summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorpatthoyts <patthoyts@noemail.net>2011-03-19 00:39:28 (GMT)
committerpatthoyts <patthoyts@noemail.net>2011-03-19 00:39:28 (GMT)
commitb6144dc732e01147645205d69851a8ef54071252 (patch)
treed4842afa8fb7baa0b991eca79b8907667f4adc1e /win
parent527676f93b7d241d6cb2c9ba0a98e71c304b8d54 (diff)
downloadtk-b6144dc732e01147645205d69851a8ef54071252.zip
tk-b6144dc732e01147645205d69851a8ef54071252.tar.gz
tk-b6144dc732e01147645205d69851a8ef54071252.tar.bz2
[Bug 3205464] - handle [wm forget] when the parent is unmapped on windows
The fix for [Bug 2009788] prevented a crash but causes windows to be lost if their parent is unmapped when [wm forget] is called. Added a test for this case and ensure that the parent window exists when we remap the child to its parent. Reported-by: Koen Danckaert <danckaert@users.sourceforge.net> Reported-by: Eric Boudaillier <beric@users.sourceforge.net> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> FossilOrigin-Name: ecfa48e76b12e6868e56a31c7fc26e8aa2e3b194
Diffstat (limited to 'win')
-rw-r--r--win/tkWinWm.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/win/tkWinWm.c b/win/tkWinWm.c
index 290fe3e..d8d3b19 100644
--- a/win/tkWinWm.c
+++ b/win/tkWinWm.c
@@ -3706,9 +3706,8 @@ WmForgetCmd(tkwin, winPtr, interp, objc, objv)
if (Tk_IsTopLevel(frameWin)) {
Tk_UnmapWindow(frameWin);
winPtr->flags &= ~(TK_TOP_HIERARCHY|TK_TOP_LEVEL|TK_HAS_WRAPPER|TK_WIN_MANAGED);
- if (Tk_IsMapped(Tk_Parent(frameWin))) {
- RemapWindows(winPtr, Tk_GetHWND(winPtr->parentPtr->window));
- }
+ Tk_MakeWindowExist((Tk_Window)winPtr->parentPtr);
+ RemapWindows(winPtr, Tk_GetHWND(winPtr->parentPtr->window));
TkWmDeadWindow(winPtr);
/* flags (above) must be cleared before calling */
/* TkMapTopFrame (below) */