root_geometry_manager()root_geometry_manager()Nameroot_geometry_manager - Shell class method called to negotiate shell
geometry requests with a window manager.
Synopsis
typedef XtGeometryResult (*XtGeometryHandler)(Widget, XtWidgetGeometry
*,
XtWidgetGeometry *);
Widget w;
XtWidgetGeometry *request;
XtWidgetGeometry *geometry_return;
Inputs
w Specifies the shell widget making the request.
request Specifies the requested geometry.
Outputs
geometry_return
Specifies the reply geometry.
Returns
The window manager's reply: XtGeometryYes, XtGeometryNo, XtGeometryAl‐
most, or XtGeometryDone.
Availability
Release 4 and later.
Description
The root_geometry_manager() method is registered on the root_geome‐
try_manager field of a ShellClassExtensionRec structure with
record_type NULLQUARK, which is itself registered on the extension
field of the Shell class part structure. The root_geometry_manager()
method will be called when a shell widget calls XtMakeGeometryRequest()
or XtMakeResizeRequest(), and should negotiate the requested size with
the window manager.
The arguments to this method are the same as those passed to the geome‐
try_manager() method. The root_geometry_manager() method should pass
the geometry request on to the window manager. If the window manager
permits the new geometry, the root_geometry_manager() should return
XtGeometryYes; if the window manager denies the geometry request or it
does not change the window geometry within some timeout interval (the
XtNwmTimeout resource for WMShell, for example), the root_geometry_man‐
ager() should return XtGeometryNo. If the window manager makes some
alternative geometry change, the root_geometry_manager() method may
either return XtGeometryNo and handle the new geometry as a resize, or
may return XtGeometryAlmost in anticipation that the shell will accept
the compromise. If the compromise is not accepted, the new size must
then be handled as a resize.
Communication with a window manager is an asynchronous process, but the
root_geometry_manager() procedure must return its answer synchronously.
It will have to issue its request and then block until the reply
arrives.
The root_geometry_manager() method is not chained. It can be inherited
by specifying XtInheritRootGeometryManager in the Shell extension
record. If there is no Shell extension record with record_type equal
to NULLQUARK, then the Intrinsics will behave as if an extension was
specified with XtInheritRootGeometryManager.
See the Inter-Client Communications Conventions Manual for information
on communicating with window managers. See geometry_manager(4) for a
description of the structures and the possible return values of this
method.
Usage
The root_geometry_manager() method of the Shell class itself handles
communication with ICCCM-compliant window managers. It sets the appro‐
priate properties to make the geometry request, then uses XCheck‐
IfEvent() to block until an ConfigureNotify event arrives in reply.
This method also uses private functions internal to the Intrinsics in
order to correctly handle the events. Because of the complexity and
implementation-specific nature of this method, classes that want to
define a custom root_geometry_manager() method should make their
requests to the window manager, and then call their superclass's method
to make additional requests, block, and get the response.
See AlsoXtMakeGeometryRequest(1), XtMakeResizeRequest(1),
Shell(3),
geometry_manager(4).
Xt - Intrinsics Methods root_geometry_manager()