[comp.windows.x] getting a "withdrawn" window back

davide@maverick.cad.mcc.com (David Eckelkamp) (08/01/90)

Here's a question that I hope someone can help me with. There is a
window that has a "window state" of withdrawn. Is there any way to get
that window un-withdrawn?

Here are the specifics. We are running the OpenWindows 2.0 FCS server
with R4 twm on Sun4s with SunOS 4.0.3. The window in question is from
GNU Emacs. I can get the window id by using xlswins. Then I used xprop
to get the properties. In the WM_STATE list the "window state" is
Withdrawn. The Emacs window was open an working normally before it
disappeared. The user doesn't remember exactly what he was doing when
it disappeared but when it has happened to me, I had just iconified
the window. The twm function f.iconify is bound to one of the Sun
function keys, namely F7.

This is second instance of this disappearing window trick for this
particular user. The first instance was with xrn. After the window
disappeared, he tried to kill xrn. When he did, twm asked him to place
the xrn window on screen like it was an initial window. Then xrn
brought up the "kill confirmation" dialog box. At this point xrn was
going to die, but the window did reappear, however briefly :-)

Can anybody shed some light on this problem.  I would really love some
way to get the window back without killing the application.

Thanks for what ever help you can supply.

David Eckelkamp
eckelkamp@mcc.com
cs.utexas.edu!milano!cadillac!davide

mouse@LARRY.MCRCIM.MCGILL.EDU (08/10/90)

> Here's a question that I hope someone can help me with.  There is a
> window that has a "window state" of withdrawn.  Is there any way to
> get that window un-withdrawn?

According to the ICCCM,

	o  Withdrawn -> Normal.  The client should  map  the  window
	   with WM_HINTS.initial_state being NormalState.
	
	o  Withdrawn -> Iconic.  The client should  map  the  window
	   with WM_HINTS.initial_state being IconicState.
	
	o  Normal -> Iconic.  The client should send a  client  mes-
	   sage event as described below.
	
	o  Normal -> Withdrawn.  The client should unmap the window,
	   and  follow  it  with  a  synthetic  UnmapNotify event as
	   described below.
	
	o  Iconic -> Normal.  The client should map the window.  The
	   contents of WM_HINTS.initial_state are irrelevant in this
	   case.
	
	o  Iconic -> Withdrawn.  The client should unmap the window,
	   and  follow  it  with  a  synthetic  UnmapNotify event as
	   described below.

I'm not including the "described below" stuff here; see the ICCCM for
that.

In your particular case, you may need to throw together a small program
to call XMapWindow (possibly poking the WM_HINTS property first) with a
window ID taken from the command line, since the problem is that the
client isn't taking care of things itself.

					der Mouse

			old: mcgill-vision!mouse
			new: mouse@larry.mcrcim.mcgill.edu