Tk Source Code

Check-in [20029d1c]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix bug [9771ae0f0b]: In Aqua, deiconifying a transient of a withdrawn window can create a zombie
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | bug-9771ae0f0b
Files: files | file ages | folders
SHA3-256: 20029d1c4fa3dddc0d72647bb3e79e26519f5d4b8377f7e7d3332c73bb62fd18
User & Date: culler 2019-02-23 05:44:41
Context
2019-02-23
21:16
Fix bug [9771ae0f0b]: In Aqua, deiconifying a transient of a withdrawn window can create a zombie. check-in: b2b91450 user: culler tags: core-8-6-branch
05:44
Fix bug [9771ae0f0b]: In Aqua, deiconifying a transient of a withdrawn window can create a zombie Closed-Leaf check-in: 20029d1c user: culler tags: bug-9771ae0f0b
02:30
Fix bug [56a1823c73]: Aqua toplevels can fail to appear on screen. check-in: 5e709226 user: culler tags: core-8-6-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to macosx/tkMacOSXWm.c.

6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884











6885
6886

6887
6888
6889
6890
6891
6892
6893
	    [macWindow setExcludedFromWindowsMenu:NO];
	    wmPtr->flags &= ~WM_TOPMOST;
	}
	if (wmPtr->master != None) {
	    TkDisplay *dispPtr = TkGetDisplayList();
	    TkWindow *masterWinPtr = (TkWindow *)
		    Tk_IdToWindow(dispPtr->display, wmPtr->master);

	    if (masterWinPtr && masterWinPtr->window != None &&
		    TkMacOSXHostToplevelExists(masterWinPtr)) {
		NSWindow *masterMacWin =
			TkMacOSXDrawableWindow(masterWinPtr->window);

		if (masterMacWin && masterMacWin != parentWindow &&
			(winPtr->flags & TK_MAPPED)) {
		    if (parentWindow) {
			[parentWindow removeChildWindow:macWindow];
		    }











		    [masterMacWin addChildWindow:macWindow
			    ordered:NSWindowAbove];

		    if (wmPtr->flags & WM_TOPMOST) {
			[macWindow setLevel:kCGUtilityWindowLevel];
		    }
		}
	    }
	} else if (parentWindow) {
	    [parentWindow removeChildWindow:macWindow];






<










>
>
>
>
>
>
>
>
>
>
>
|
|
>







6867
6868
6869
6870
6871
6872
6873

6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
	    [macWindow setExcludedFromWindowsMenu:NO];
	    wmPtr->flags &= ~WM_TOPMOST;
	}
	if (wmPtr->master != None) {
	    TkDisplay *dispPtr = TkGetDisplayList();
	    TkWindow *masterWinPtr = (TkWindow *)
		    Tk_IdToWindow(dispPtr->display, wmPtr->master);

	    if (masterWinPtr && masterWinPtr->window != None &&
		    TkMacOSXHostToplevelExists(masterWinPtr)) {
		NSWindow *masterMacWin =
			TkMacOSXDrawableWindow(masterWinPtr->window);

		if (masterMacWin && masterMacWin != parentWindow &&
			(winPtr->flags & TK_MAPPED)) {
		    if (parentWindow) {
			[parentWindow removeChildWindow:macWindow];
		    }
		    
		    /*
		     * A child NSWindow retains its relative position with
		     * respect to the parent when the parent is moved.  This is
		     * pointless if the parent is offscreen, and adding a child
		     * to an offscreen window causes the parent to be displayed
		     * as a zombie.  So we should only do this if the parent is
		     * visible.
		     */

		    if ([masterMacWin isVisible]) {
			[masterMacWin addChildWindow:macWindow
					     ordered:NSWindowAbove];
		    }
		    if (wmPtr->flags & WM_TOPMOST) {
			[macWindow setLevel:kCGUtilityWindowLevel];
		    }
		}
	    }
	} else if (parentWindow) {
	    [parentWindow removeChildWindow:macWindow];