tk4.2 C API - MaintGeom






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 con-
                                    trolled.

     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 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 repo-
          sitioned 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.  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  coor-
     dinate  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.



KEYWORDS

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