Tk_MaintainGeometry(3) Tk Library Procedures Tk_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 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 rela-tive relative
tive 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, as well
as handling the simpler case of slaves whose masters are their parents. Tk_MaintainGeometry is typi-cally typically
cally 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 par-ent parent
ent and then moves and resizes the slave appropriately. Furthermore, it remembers the desired posi-tion position
tion and creates event handlers to monitor the master and all of its ancestors up to (but not includ-ing) including)
ing) 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_Unmaintain-Geometry Tk_UnmaintainGeometry
Geometry 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 mas-ter-slave master-slave
ter-slave pair that is isn't currently managed, the call has no effect.
KEYWORDS
geometry manager, map, master, parent, position, slave, unmap
Tk 4.0 Tk_MaintainGeometry(3)
|