# Copyright (c) 1990-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
#
#
=head1 NAME
Tk_GeometryRequest, Tk_SetInternalBorder - specify desired geometry or internal border for a window
=for category C Programming
=head1 SYNOPSIS
B<#include E<lt>tk.hE<gt>>
B<Tk_GeometryRequest>(I<tkwin, reqWidth, reqHeight>)
B<Tk_SetInternalBorder>(I<tkwin, width>)
=head1 ARGUMENTS
=over 4
=item Tk_Window tkwin (in)
Window for which geometry is being requested.
=item int reqWidth (in)
Desired width for I<tkwin>, in pixel units.
=item int reqHeight (in)
Desired height for I<tkwin>, in pixel units.
=item int width (in)
Space to leave for internal border for I<tkwin>, in pixel units.
=back
=head1 DESCRIPTION
B<Tk_GeometryRequest> is called by widget code to indicate its
preference for the dimensions of a particular window. The arguments
to B<Tk_GeometryRequest> are made available to the geometry
manager for the window, which then decides on the actual geometry
for the window. Although geometry managers generally try to satisfy
requests made to B<Tk_GeometryRequest>, there is no guarantee that
this will always be possible. Widget code should not assume that
a geometry request will be satisfied until it receives a
B<ConfigureNotify> event indicating that the geometry change has
occurred. Widget code should never call procedures like
B<Tk_ResizeWindow> directly. Instead, it should invoke
B<Tk_GeometryRequest> and leave the final geometry decisions to
the geometry manager.
If I<tkwin> is a top-level window, then the geometry information
will be passed to the window manager using the standard ICCCM protocol.
B<Tk_SetInternalBorder> is called by widget code to indicate that
the widget has an internal border. This means that the widget draws
a decorative border inside the window instead of using the standard
X borders, which are external to the window's area. For example,
internal borders are used to draw 3-D effects. I<Width>
specifies the width of the border in pixels. Geometry managers will
use this information to avoid placing any children of I<tkwin>
overlapping the outermost I<width> pixels of I<tkwin>'s area.
The information specified in calls to B<Tk_GeometryRequest> and
B<Tk_SetInternalBorder> can be retrieved using the macros
B<Tk_ReqWidth>, B<Tk_ReqHeight>, and B<Tk_InternalBorderWidth>.
See the L<Tk::WindowId> documentation for details.
=head1 KEYWORDS
geometry, request