#  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


B<#include E<lt>tk.hE<gt>>

B<Tk_GeometryRequest>(I<tkwin, reqWidth, reqHeight>)

B<Tk_SetInternalBorder>(I<tkwin, width>)


=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.



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.


geometry, request