Tk_MaintainGeometry, Tk_UnmaintainGeometry - maintain geometry of one window relative to another
- Tk_MaintainGeometry, Tk_UnmaintainGeometry - maintain geometry of one window relative to another
- #include <tk.h>
- Tk_MaintainGeometry(slave, master, x, y, width, height)
- Tk_UnmaintainGeometry(slave, master)
Tk_MaintainGeometry(slave, master, x, y, width, height)
Tk_MaintainGeometry and Tk_UnmaintainGeometry make it
easier for geometry managers to deal with slaves whose masters are not
Three problems arise if the master for a slave is not its parent:
- 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.
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.
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
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
Tk_MaintainGeometry deals with these problems for slaves
whose masters are not 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
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
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 is not currently managed, the call has no effect.
geometry manager, map, master, parent, position, slave, unmap
Copyright © 1995-1997 Roger E. Critchlow Jr.
Copyright © 1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.