[comp.windows.x] TransientShell widget.

mhardik@intel.com (Manoj Hardikar ~) (08/01/89)

I am having trouble with transient shell widgets. I am able to iconify them
separtely even when the parent is not iconified. I am creating and mapping
the pop up widget as follows:

>    popup= XtCreatePopupShell("transient_popup",transientShellWidgetClass,
				parent,NULL,0);

>    label= XtCreateManagedWidget("transient",labelWidgetClass,
			    popup,NULL,0);

>    XtPopup(popup,XtCallbackNone);


I am running XNeWS (pre FCS) on SUN 386i. I have tried this with uwm and
twm and have got the same behavior. What am I missing? 

A note in the ICCCM manual (page 32) says: 

"Window managers are free to decide if WM_TRANSIENT_FOR windows should be
iconified when the window they  are transient for is. Clients displaying
WM_TRANSIENT_FOR windows which have the window they are transient for
iconified do not need to request that the same operation be performed on
the WM_TRANSIENT_FOR window; the window manager will change its state if
that is the policy it wishes to  enforce" 

Does this have anything to do with the problem? Any help would be appreciated.

Thanks.

Manoj A. Hardikar
mhardik@cadev4.intel.com

converse@EXPO.LCS.MIT.EDU (Donna Converse) (08/01/89)

> I am having trouble with transient shell widgets. I am able to iconify them
> separtely even when the parent is not iconified. I am creating and mapping
> the pop up widget as follows:

[code deleted]

> >    XtPopup(popup,XtCallbackNone);

The second argument to XtPopup is of type XtGrabKind; XtCallbackNone
is not of type XtGrabKind.

> A note in the ICCCM manual (page 32) says: 
> 
> "Window managers are free to decide if WM_TRANSIENT_FOR windows should be
> iconified when the window they  are transient for is. Clients displaying
> WM_TRANSIENT_FOR windows which have the window they are transient for
> iconified do not need to request that the same operation be performed on
> the WM_TRANSIENT_FOR window; the window manager will change its state if
> that is the policy it wishes to  enforce" 
> 

Shell widgets of class transientShellWidgetClass have the WM_TRANSIENT_FOR
property set.  They are transient for (on behalf of) some other window.
The passage above discusses the issue of iconifying the transient when
the window it is transient for is iconified.  You are asking about it
the other way around.

Separately iconifying a transient window is not prohibited by the ICCCM.
Whether it is allowed is an issue of window manager policy, implying that
the application can't prevent the transient from being separately iconifed.
So... what you see is not a problem.  It might allow the user to get some
useful work done.  If it's deadly to your application, use an override
shell and grab the pointer while the override shell is mapped.


Donna Converse
converse@expo.lcs.mit.edu