NAME

       Tk_MaintainGeometry,   Tk_UnmaintainGeometry   -  maintain
       geometry of one window relative to another


SYNOPSIS

       #include <tk.h>

       Tk_MaintainGeometry(slave, master, x, y, width, height)

       Tk_UnmaintainGeometry(slave, master)


ARGUMENTS

       Tk_Window   slave    (in)      Window whose geometry is to
                                      be controlled.

       Tk_Window   master   (in)      Window  relative  to  which
                                      slave's  geometry  will  be
                                      controlled.

       int         x        (in)      Desired   x-coordinate   of
                                      slave in  master,  measured
                                      in  pixels  from the inside
                                      of master's left border  to
                                      the outside of slave's left
                                      border.

       int         y        (in)      Desired   y-coordinate   of
                                      slave  in  master, measured
                                      in pixels from  the  inside
                                      of  master's  top border to
                                      the outside of slave's  top
                                      border.

       int         width    (in)      Desired width for slave, in
                                      pixels.

       int         height   (in)      Desired height  for  slave,
                                      in pixels.
_________________________________________________________________



DESCRIPTION

       Tk_MaintainGeometry and Tk_UnmaintainGeometry make it eas­
       ier for geometry managers to deal with slaves  whose  mas­
       ters  are  not their parents.  Three problems arise if the
       master for a slave is not its parent:

       [1]    The x- and y-position of the slave must  be  trans­
              lated  from  the coordinate system of the master to
              that of the parent before positioning the slave.

              be repositioned within its parent in order to main­
              tain the correct position relative to the master.

       [3]    If  the master or one of its ancestors is mapped or
              unmapped, then the slave must be mapped or unmapped
              to correspond.

       None  of these problems is an issue if the parent and mas­
       ter are the same.  For example, if the master  or  one  of
       its  ancestors  is  unmapped,  the  slave is automatically
       removed by the screen by X.

       Tk_MaintainGeometry deals with these problems  for  slaves
       whose  masters  aren't their parents.  Tk_MaintainGeometry
       is typically called  by  a  window  manager  once  it  has
       decided where a slave should be positioned relative to its
       master.  Tk_MaintainGeometry translates the coordinates to
       the coordinate system of slave's parent and then moves and
       resizes the slave appropriately.  Furthermore,  it  remem­
       bers  the  desired  position and creates event handlers to
       monitor the master and all of its ancestors up to (but not
       including) the slave's parent.  If any of these windows is
       moved, mapped, or unmapped, the slave will be adjusted  so
       that  it  is mapped only when the master is mapped and its
       geometry relative to the master remains as specified by x,
       y, width, and height.

       When  a window manager relinquishes control over a window,
       or if it decides that it  does  not  want  the  window  to
       appear  on  the  screen  under  any  conditions,  it calls
       Tk_UnmaintainGeometry.  Tk_UnmaintainGeometry  unmaps  the
       window and cancels any previous calls to Tk_MaintainGeome­
       try for the master-slave pair, so that the slave's  geome­
       try  and  mapped  state are no longer maintained automati­
       cally.  Tk_UnmaintainGeometry need  not  be  called  by  a
       geometry  manager  if the slave, the master, or any of the
       master's ancestors is destroyed:  Tk will call it automat­
       ically.

       If  Tk_MaintainGeometry  is called repeatedly for the same
       master-slave pair, the information from  the  most  recent
       call  supersedes any older information.  If Tk_Unmaintain­
       Geometry is called for a master-slave pair that  is  isn't
       currently managed, the call has no effect.



KEYWORDS

       geometry  manager,  map,  master, parent, position, slave,
       unmap