Tk_MaintainGeometry(3)
Tk_MaintainGeometry(3)Tk Library ProceduresTk_MaintainGeometry(3)
_________________________________________________________________
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
Tk Last change: 4.0 1
Tk_MaintainGeometry(3)Tk Library ProceduresTk_MaintainGeometry(3)
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 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 rela-
tive to its master. Tk_MaintainGeometry translates the
coordinates to the coordinate system of slave's parent and
then moves and resizes the slave appropriately. Further-
more, 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
Tk Last change: 4.0 2
Man(1) output converted with
man2html