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 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
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
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 is not currently managed, the
call has no effect.
KEYWORDS¶
geometry manager, map, master, parent, position, slave, unmap