Provided by: tk8.4-doc_8.4.19-4_all bug


       Tk_MaintainGeometry,  Tk_UnmaintainGeometry  - maintain geometry of one window relative to


       #include <tk.h>

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

       Tk_UnmaintainGeometry(slave, master)


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

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

       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.


       Tk_MaintainGeometry and Tk_UnmaintainGeometry make it easier for geometry managers to deal
       with slaves whose masters 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 translated from the coordinate system of
              the master to that of the parent before positioning the slave.

       [2]    If the master window, or any of its ancestors up to the slave's parent,  is  moved,
              then  the  slave  must  be  repositioned within its parent in order to maintain 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 master 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, as well as handling the simpler case of slaves whose masters are  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 remembers 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_MaintainGeometry for the master-slave pair, so that the slave's geometry and
       mapped state are no longer maintained automatically.  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 automatically.

       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_UnmaintainGeometry is called for a master-slave pair that is isn't  currently  managed,
       the call has no effect.


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