summaryrefslogtreecommitdiffstats
path: root/unix/tkUnixWm.c
diff options
context:
space:
mode:
authormdejong <mdejong>2002-12-01 23:37:53 (GMT)
committermdejong <mdejong>2002-12-01 23:37:53 (GMT)
commite99b39f8cfd8420e69f93dd46fd76814ed8c31b0 (patch)
tree17edb0418713442deef44e4687c1729ab0d62a32 /unix/tkUnixWm.c
parent7a9ae2c231ff504bcb2bdcf5e4e9e887290981f3 (diff)
downloadtk-e99b39f8cfd8420e69f93dd46fd76814ed8c31b0.zip
tk-e99b39f8cfd8420e69f93dd46fd76814ed8c31b0.tar.gz
tk-e99b39f8cfd8420e69f93dd46fd76814ed8c31b0.tar.bz2
* tests/wm.test: Add wm-transient-6.3 to
check that a transient remains withdrawn when it is first withdrawn and then turned into a transient. * unix/tkUnixWm.c: * win/tkWinWm.c: Replace WM_TRANSIENT_WITHDRAWN with WM_WITHDRAWN and set this flag whenever a window is explicitly withdrawn. This fixes the test case added above. [Bug 644356]
Diffstat (limited to 'unix/tkUnixWm.c')
-rw-r--r--unix/tkUnixWm.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
index 2a8cc82..f8d1a73 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.34 2002/09/02 21:21:14 hobbs Exp $
+ * RCS: @(#) $Id: tkUnixWm.c,v 1.35 2002/12/01 23:37:53 mdejong Exp $
*/
#include "tkPort.h"
@@ -244,8 +244,8 @@ typedef struct TkWmInfo {
* allow the user to change the height of the
* window (controlled by "wm resizable"
* command).
- * WM_TRANSIENT_WITHDRAWN - non-zero means that this is a transient window
- * that has explicitly been withdrawn. It should
+ * WM_WITHDRAWN - non-zero means that this window has explicitly
+ * been withdrawn. If it's a transient, it should
* not mirror state changes in the master.
*/
@@ -262,7 +262,7 @@ typedef struct TkWmInfo {
#define WM_ADDED_TOPLEVEL_COLORMAP 0x800
#define WM_WIDTH_NOT_RESIZABLE 0x1000
#define WM_HEIGHT_NOT_RESIZABLE 0x2000
-#define WM_TRANSIENT_WITHDRAWN 0x4000
+#define WM_WITHDRAWN 0x4000
/*
* This module keeps a list of all top-level windows, primarily to
@@ -1488,9 +1488,7 @@ WmDeiconifyCmd(tkwin, winPtr, interp, objc, objv)
": it is an embedded window", (char *) NULL);
return TCL_ERROR;
}
- if (wmPtr->flags & WM_TRANSIENT_WITHDRAWN) {
- wmPtr->flags &= ~WM_TRANSIENT_WITHDRAWN;
- }
+ wmPtr->flags &= ~WM_WITHDRAWN;
TkpWmSetState(winPtr, NormalState);
return TCL_OK;
}
@@ -2843,9 +2841,7 @@ WmStateCmd(tkwin, winPtr, interp, objc, objv)
}
if (index == OPT_NORMAL) {
- if (wmPtr->flags & WM_TRANSIENT_WITHDRAWN) {
- wmPtr->flags &= ~WM_TRANSIENT_WITHDRAWN;
- }
+ wmPtr->flags &= ~WM_WITHDRAWN;
(void) TkpWmSetState(winPtr, NormalState);
} else if (index == OPT_ICONIC) {
if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) {
@@ -2868,9 +2864,7 @@ WmStateCmd(tkwin, winPtr, interp, objc, objv)
return TCL_ERROR;
}
} else { /* OPT_WITHDRAWN */
- if (wmPtr->masterPtr != NULL) {
- wmPtr->flags |= WM_TRANSIENT_WITHDRAWN;
- }
+ wmPtr->flags |= WM_WITHDRAWN;
if (TkpWmSetState(winPtr, WithdrawnState) == 0) {
Tcl_SetResult(interp,
"couldn't send withdraw message to window manager",
@@ -3133,9 +3127,7 @@ WmWithdrawCmd(tkwin, winPtr, interp, objc, objv)
(char *) NULL);
return TCL_ERROR;
}
- if (wmPtr->masterPtr != NULL) {
- wmPtr->flags |= WM_TRANSIENT_WITHDRAWN;
- }
+ wmPtr->flags |= WM_WITHDRAWN;
if (TkpWmSetState(winPtr, WithdrawnState) == 0) {
Tcl_SetResult(interp,
"couldn't send withdraw message to window manager",
@@ -3176,7 +3168,7 @@ WmWaitMapProc(clientData, eventPtr)
return;
if (eventPtr->type == MapNotify) {
- if (!(winPtr->wmInfoPtr->flags & WM_TRANSIENT_WITHDRAWN))
+ if (!(winPtr->wmInfoPtr->flags & WM_WITHDRAWN))
(void) TkpWmSetState(winPtr, NormalState);
} else if (eventPtr->type == UnmapNotify) {
(void) TkpWmSetState(winPtr, WithdrawnState);