CLIM mail archive


When is a frame *really* up?

   Date:     Tue, 17 May 94 14:16:38 EDT
   From: Nichael Cramer <ncramer@BBN.COM>


   Is there a general, portable way to tell if an application frame has
   really, honest-to-gosh, become visible on the screen?  This is important in
   a number of place; two obvious examples:

It is supposed to be the case that calling WINDOW-VISIBILITY on one of
the streams, or MIRROR-VISIBLE-P on any of the sheets should provide
this information.  When they return NIL, the thing is deexposed (for
you Genera folks), or unmapped or iconified (for you X folks).

This works in Genera, and (as of today) in LispWorks, but who knows
about anywhere else.

   1] If my application pops-up a new frame (possibly in situation where the
   user wouldn't neccessarily expect it) I would like to indicate that
   something is happening (for example by setting the "busy" pointer-cursor).

   Unfortunately between the time that my code finishes launching the frame
   and when the user actually sees the screen (which could be a sizable part
   of minute later) the only symptom is that the system appears to hang.  Bad
   for the user.

   2] Similarly I face the following problem if my application launches a
   frame that wants to come up in particular display configuration.  Namely,
   if I'm doing anything other than strictly a vanilla redisplay I seem to be
   getting into a race condition between the normal redisplay code and and my
   display code.

   As a result, I would like to wait until the frame is _really_ up and
   running and _then_ start massaging the display.  Again, I don't know how to
   determine if this is the case.

   Most of the obvious things (for example FRAME-STATE, etc) return the value
   that the frame _will_ have once it gets up on the screen, with no
   information about what's really happening.

   Or is this all hopeless because I'm trying to extract information that
   lives out on the other end of the X-connection?


Main Index | Thread Index