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.
[2] If the master window, or any of its ancestors up to
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, as well as handling
the simpler case of slaves whose masters are their par
ents. Tk_MaintainGeometry is typically called by a window
manager once it has decided where a slave should be posi
tioned relative to its master. Tk_MaintainGeometry trans
lates 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 ances
tors 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
Man(1) output converted with
man2html