CH12.xml revision 9e7bcd65
19e7bcd65Smrg<chapter id='Nonwidget_Objects'> 29e7bcd65Smrg<title>Nonwidget Objects</title> 39e7bcd65Smrg 49e7bcd65Smrg<para> 59e7bcd65SmrgAlthough widget writers are free to treat 69e7bcd65SmrgCore 79e7bcd65Smrgas the base class of 89e7bcd65Smrgthe widget hierarchy, there are actually three classes above it. 99e7bcd65SmrgThese classes are 109e7bcd65SmrgObject, 119e7bcd65SmrgRectObj 129e7bcd65Smrg(Rectangle Object), and (unnamed), 139e7bcd65Smrgand members of these classes 149e7bcd65Smrgare referred to generically as <emphasis remap='I'>objects</emphasis>. By convention, the term 159e7bcd65Smrg<emphasis remap='I'>widget</emphasis> refers only to objects that are a subclass of 169e7bcd65SmrgCore, 179e7bcd65Smrgand the term <emphasis remap='I'>nonwidget</emphasis> refers to objects that are not a subclass of 189e7bcd65SmrgCore. 199e7bcd65SmrgIn the preceding portion of this specification, the interface 209e7bcd65Smrgdescriptions indicate explicitly whether the generic <emphasis remap='I'>widget</emphasis> argument 219e7bcd65Smrgis restricted to particular subclasses of Object. Sections 12.2.5, 229e7bcd65Smrg12.3.5, and 12.5 summarize the permissible classes of the arguments to, and 239e7bcd65Smrgreturn values from, each of the Intrinsics routines. 249e7bcd65Smrg</para> 259e7bcd65Smrg<sect1 id="Data_Structures"> 269e7bcd65Smrg<title>Data Structures</title> 279e7bcd65Smrg<para> 289e7bcd65SmrgIn order not to conflict with previous widget code, the data 299e7bcd65Smrgstructures used by nonwidget objects do not follow all the same 309e7bcd65Smrgconventions as those for widgets. In particular, the class records 319e7bcd65Smrgare not composed of parts but instead are complete data structures 329e7bcd65Smrgwith filler for the widget fields they do not use. This 339e7bcd65Smrgallows the static class initializers for existing widgets to remain 349e7bcd65Smrgunchanged. 359e7bcd65Smrg</para> 369e7bcd65Smrg</sect1> 379e7bcd65Smrg 389e7bcd65Smrg<sect1 id="Object_Objects"> 399e7bcd65Smrg<title>Object Objects</title> 409e7bcd65Smrg<para> 419e7bcd65SmrgThe 429e7bcd65SmrgObject 439e7bcd65Smrgobject contains the definitions of fields common to all 449e7bcd65Smrgobjects. It encapsulates the mechanisms for resource management. 459e7bcd65SmrgAll objects and widgets are members of subclasses of 469e7bcd65SmrgObject, 479e7bcd65Smrgwhich is defined by the 489e7bcd65Smrg<function>ObjectClassPart</function> 499e7bcd65Smrgand 509e7bcd65Smrg<function>ObjectPart</function> 519e7bcd65Smrgstructures. 529e7bcd65Smrg</para> 539e7bcd65Smrg<sect2 id="ObjectClassPart_Structure"> 549e7bcd65Smrg<title>ObjectClassPart Structure</title> 559e7bcd65Smrg<para> 569e7bcd65SmrgThe common fields for all object classes are defined in the 579e7bcd65Smrg<function>ObjectClassPart</function> 589e7bcd65Smrgstructure. All fields have the same purpose, 599e7bcd65Smrgfunction, and restrictions as the corresponding fields in 609e7bcd65Smrg<function>CoreClassPart</function>; 619e7bcd65Smrgfields whose 629e7bcd65Smrgnames are obj<emphasis remap='I'>n</emphasis> for some integer <emphasis remap='I'>n</emphasis> are not 639e7bcd65Smrgused for Object, 649e7bcd65Smrgbut exist to pad the data structure so that it matches Core's class 659e7bcd65Smrgrecord. The class record initialization must fill all 669e7bcd65Smrgobj<emphasis remap='I'>n</emphasis> fields with NULL or zero as appropriate to the type. 679e7bcd65Smrg</para> 689e7bcd65Smrg<literallayout > 699e7bcd65Smrgtypedef struct _ObjectClassPart { 709e7bcd65Smrg WidgetClass superclass; 719e7bcd65Smrg String class_name; 729e7bcd65Smrg Cardinal widget_size; 739e7bcd65Smrg XtProc class_initialize; 749e7bcd65Smrg XtWidgetClassProc class_part_initialize; 759e7bcd65Smrg XtEnum class_inited; 769e7bcd65Smrg XtInitProc initialize; 779e7bcd65Smrg XtArgsProc initialize_hook; 789e7bcd65Smrg XtProc obj1; 799e7bcd65Smrg XtPointer obj2; 809e7bcd65Smrg Cardinal obj3; 819e7bcd65Smrg XtResourceList resources; 829e7bcd65Smrg Cardinal num_resources; 839e7bcd65Smrg XrmClass xrm_class; 849e7bcd65Smrg Boolean obj4; 859e7bcd65Smrg XtEnum obj5; 869e7bcd65Smrg Boolean obj6; 879e7bcd65Smrg Boolean obj7; 889e7bcd65Smrg XtWidgetProc destroy; 899e7bcd65Smrg XtProc obj8; 909e7bcd65Smrg XtProc obj9; 919e7bcd65Smrg XtSetValuesFunc set_values; 929e7bcd65Smrg XtArgsFunc set_values_hook; 939e7bcd65Smrg XtProc obj10; 949e7bcd65Smrg XtArgsProc get_values_hook; 959e7bcd65Smrg XtProc obj11; 969e7bcd65Smrg XtVersionType version; 979e7bcd65Smrg XtPointer callback_private; 989e7bcd65Smrg String obj12; 999e7bcd65Smrg XtProc obj13; 1009e7bcd65Smrg XtProc obj14; 1019e7bcd65Smrg XtPointer extension; 1029e7bcd65Smrg} ObjectClassPart; 1039e7bcd65Smrg</literallayout> 1049e7bcd65Smrg<para> 1059e7bcd65SmrgThe extension record defined for 1069e7bcd65Smrg<function>ObjectClassPart</function> 1079e7bcd65Smrgwith a <emphasis remap='I'>record_type</emphasis> equal to 1089e7bcd65Smrg<emphasis role='strong'>NULLQUARK</emphasis> 1099e7bcd65Smrgis 1109e7bcd65Smrg<function>ObjectClassExtensionRec</function>. 1119e7bcd65Smrg</para> 1129e7bcd65Smrg<literallayout > 1139e7bcd65Smrgtypedef struct { 1149e7bcd65Smrg XtPointer next_extension; See <xref linkend='Class_Extension_Records' /> 1159e7bcd65Smrg XrmQuark record_type; See <xref linkend='Class_Extension_Records' /> 1169e7bcd65Smrg long version; See <xref linkend='Class_Extension_Records' /> 1179e7bcd65Smrg Cardinal record_size; See <xref linkend='Class_Extension_Records' /> 1189e7bcd65Smrg XtAllocateProc allocate; See <xref linkend='Widget_Instance_Allocation_The_allocate_Procedure' />. 1199e7bcd65Smrg XtDeallocateProc deallocate; See <xref linkend='Widget_Instance_Deallocation_The_deallocate_Procedure' />. 1209e7bcd65Smrg} ObjectClassExtensionRec, *ObjectClassExtension; 1219e7bcd65Smrg</literallayout> 1229e7bcd65Smrg<para> 1239e7bcd65SmrgThe prototypical 1249e7bcd65Smrg<function>ObjectClass</function> 1259e7bcd65Smrgconsists of just the 1269e7bcd65Smrg<function>ObjectClassPart</function>. 1279e7bcd65Smrg</para> 1289e7bcd65Smrg<literallayout > 1299e7bcd65Smrgtypedef struct _ObjectClassRec { 1309e7bcd65Smrg ObjectClassPart object_class; 1319e7bcd65Smrg} ObjectClassRec, *ObjectClass; 1329e7bcd65Smrg</literallayout> 1339e7bcd65Smrg<para> 1349e7bcd65SmrgThe predefined class record and pointer for 1359e7bcd65Smrg<function>ObjectClassRec</function> 1369e7bcd65Smrgare 1379e7bcd65Smrg</para> 1389e7bcd65Smrg 1399e7bcd65Smrg<para> 1409e7bcd65SmrgIn 1419e7bcd65Smrg<function>IntrinsicP.h</function>: 1429e7bcd65Smrg</para> 1439e7bcd65Smrg<literallayout > 1449e7bcd65Smrgextern ObjectClassRec objectClassRec; 1459e7bcd65Smrg</literallayout> 1469e7bcd65Smrg<para> 1479e7bcd65SmrgIn 1489e7bcd65Smrg<function>Intrinsic.h</function>: 1499e7bcd65Smrg</para> 1509e7bcd65Smrg<literallayout > 1519e7bcd65Smrgextern WidgetClass objectClass; 1529e7bcd65Smrg</literallayout> 1539e7bcd65Smrg<para> 1549e7bcd65SmrgThe opaque types 1559e7bcd65Smrg<function>Object</function> 1569e7bcd65Smrgand 1579e7bcd65Smrg<function>ObjectClass</function> 1589e7bcd65Smrgand the opaque variable 1599e7bcd65Smrg<function>objectClass</function> 1609e7bcd65Smrgare defined for generic actions on objects. 1619e7bcd65SmrgThe symbolic constant for the 1629e7bcd65Smrg<function>ObjectClassExtension</function> 1639e7bcd65Smrgversion identifier is 1649e7bcd65Smrg<function>XtObjectExtensionVersion</function> 1659e7bcd65Smrg(see <xref linkend='Class_Extension_Records' />). 1669e7bcd65Smrg<function>Intrinsic.h</function> 1679e7bcd65Smrguses an incomplete structure definition to ensure that the 1689e7bcd65Smrgcompiler catches attempts to access private data: 1699e7bcd65Smrg</para> 1709e7bcd65Smrg<literallayout > 1719e7bcd65Smrgtypedef struct _ObjectClassRec* ObjectClass; 1729e7bcd65Smrg</literallayout> 1739e7bcd65Smrg 1749e7bcd65Smrg</sect2> 1759e7bcd65Smrg 1769e7bcd65Smrg<sect2 id="ObjectPart_Structure"> 1779e7bcd65Smrg<title>ObjectPart Structure</title> 1789e7bcd65Smrg<para> 1799e7bcd65SmrgThe common fields for all object instances are defined in the 1809e7bcd65Smrg<function>ObjectPart</function> 1819e7bcd65Smrgstructure. All fields have the same meaning as the 1829e7bcd65Smrgcorresponding fields in 1839e7bcd65Smrg<function>CorePart</function>. 1849e7bcd65Smrg</para> 1859e7bcd65Smrg<literallayout > 1869e7bcd65Smrgtypedef struct _ObjectPart { 1879e7bcd65Smrg Widget self; 1889e7bcd65Smrg WidgetClass widget_class; 1899e7bcd65Smrg Widget parent; 1909e7bcd65Smrg Boolean being_destroyed; 1919e7bcd65Smrg XtCallbackList destroy_callbacks; 1929e7bcd65Smrg XtPointer constraints; 1939e7bcd65Smrg} ObjectPart; 1949e7bcd65Smrg</literallayout> 1959e7bcd65Smrg<para> 1969e7bcd65SmrgAll object instances have the 1979e7bcd65SmrgObject 1989e7bcd65Smrgfields as their first component. The prototypical type 1999e7bcd65Smrg<function>Object</function> 2009e7bcd65Smrgis defined with only this set of fields. 2019e7bcd65SmrgVarious routines can cast object pointers, as needed, to specific 2029e7bcd65Smrgobject types. 2039e7bcd65Smrg</para> 2049e7bcd65Smrg 2059e7bcd65Smrg<para> 2069e7bcd65SmrgIn 2079e7bcd65Smrg<function>IntrinsicP.h</function>: 2089e7bcd65Smrg</para> 2099e7bcd65Smrg<literallayout > 2109e7bcd65Smrgtypedef struct _ObjectRec { 2119e7bcd65Smrg ObjectPart object; 2129e7bcd65Smrg} ObjectRec, *Object; 2139e7bcd65Smrg</literallayout> 2149e7bcd65Smrg<para> 2159e7bcd65SmrgIn 2169e7bcd65Smrg<function>Intrinsic.h</function>: 2179e7bcd65Smrg</para> 2189e7bcd65Smrg<literallayout > 2199e7bcd65Smrgtypedef struct _ObjectRec *Object; 2209e7bcd65Smrg</literallayout> 2219e7bcd65Smrg 2229e7bcd65Smrg</sect2> 2239e7bcd65Smrg 2249e7bcd65Smrg<sect2 id="Object_Resources"> 2259e7bcd65Smrg<title>Object Resources</title> 2269e7bcd65Smrg<para> 2279e7bcd65SmrgThe resource names, classes, and representation types specified in the 2289e7bcd65Smrg<function>objectClassRec</function> 2299e7bcd65Smrgresource list are: 2309e7bcd65Smrg</para> 2319e7bcd65Smrg 2329e7bcd65Smrg<informaltable frame='topbot'> 2339e7bcd65Smrg <?dbfo keep-together="always" ?> 2349e7bcd65Smrg <tgroup cols='3' align='left' colsep='0' rowsep='0'> 2359e7bcd65Smrg <colspec colwidth='1.0*' colname='c1'/> 2369e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 2379e7bcd65Smrg <colspec colwidth='1.0*' colname='c3'/> 2389e7bcd65Smrg <thead> 2399e7bcd65Smrg <row rowsep='1'> 2409e7bcd65Smrg <entry>Name</entry> 2419e7bcd65Smrg <entry>Class</entry> 2429e7bcd65Smrg <entry>Representation</entry> 2439e7bcd65Smrg </row> 2449e7bcd65Smrg </thead> 2459e7bcd65Smrg <tbody> 2469e7bcd65Smrg <row> 2479e7bcd65Smrg <entry>XtNdestroyCallback</entry> 2489e7bcd65Smrg <entry>XtCCallback</entry> 2499e7bcd65Smrg <entry>XtRCallback</entry> 2509e7bcd65Smrg </row> 2519e7bcd65Smrg </tbody> 2529e7bcd65Smrg </tgroup> 2539e7bcd65Smrg</informaltable> 2549e7bcd65Smrg</sect2> 2559e7bcd65Smrg 2569e7bcd65Smrg<sect2 id="ObjectPart_Default_Values"> 2579e7bcd65Smrg<title>ObjectPart Default Values</title> 2589e7bcd65Smrg<para> 2599e7bcd65SmrgAll fields in 2609e7bcd65Smrg<function>ObjectPart</function> 2619e7bcd65Smrghave the same default values as the corresponding fields in 2629e7bcd65Smrg<function>CorePart</function>. 2639e7bcd65Smrg</para> 2649e7bcd65Smrg</sect2> 2659e7bcd65Smrg 2669e7bcd65Smrg<sect2 id="Object_Arguments_to_xI_Routines"> 2679e7bcd65Smrg<title>Object Arguments to Intrinsics Routines</title> 2689e7bcd65Smrg<para> 2699e7bcd65SmrgThe WidgetClass arguments to the following procedures may be 2709e7bcd65Smrg<function>objectClass</function> 2719e7bcd65Smrgor any subclass: 2729e7bcd65Smrg</para> 2739e7bcd65Smrg 2749e7bcd65Smrg<para> 2759e7bcd65Smrg<emphasis role='strong'>XtInitializeWidgetClass</emphasis>, 2769e7bcd65Smrg<emphasis role='strong'>XtCreateWidget</emphasis>, 2779e7bcd65Smrg<emphasis role='strong'>XtVaCreateWidget</emphasis> 2789e7bcd65Smrg<emphasis role='strong'>XtIsSubclass</emphasis>, 2799e7bcd65Smrg<emphasis role='strong'>XtCheckSubclass</emphasis> 2809e7bcd65Smrg<emphasis role='strong'>XtGetResourceList</emphasis>, 2819e7bcd65Smrg<emphasis role='strong'>XtGetConstraintResourceList</emphasis> 2829e7bcd65Smrg</para> 2839e7bcd65Smrg 2849e7bcd65Smrg<para> 2859e7bcd65SmrgThe Widget arguments to the following procedures may be of class 2869e7bcd65SmrgObject 2879e7bcd65Smrgor any subclass: 2889e7bcd65Smrg</para> 2899e7bcd65Smrg<itemizedlist spacing='compact'> 2909e7bcd65Smrg <listitem> 2919e7bcd65Smrg <para> 2929e7bcd65Smrg<xref linkend='XtCreateWidget' xrefstyle='select: title'/>, 2939e7bcd65Smrg<xref linkend='XtVaCreateWidget' xrefstyle='select: title'/> 2949e7bcd65Smrg </para> 2959e7bcd65Smrg </listitem> 2969e7bcd65Smrg <listitem> 2979e7bcd65Smrg <para> 2989e7bcd65Smrg<xref linkend='XtAddCallback' xrefstyle='select: title'/>, 2999e7bcd65Smrg<xref linkend='XtAddCallbacks' xrefstyle='select: title'/>, 3009e7bcd65Smrg<xref linkend='XtRemoveCallback' xrefstyle='select: title'/>, 3019e7bcd65Smrg<xref linkend='XtRemoveCallbacks' xrefstyle='select: title'/>, 3029e7bcd65Smrg<xref linkend='XtRemoveAllCallbacks' xrefstyle='select: title'/>, 3039e7bcd65Smrg<xref linkend='XtCallCallbacks' xrefstyle='select: title'/>, 3049e7bcd65Smrg<xref linkend='XtHasCallbacks' xrefstyle='select: title'/>, 3059e7bcd65Smrg<xref linkend='XtCallCallbackList' xrefstyle='select: title'/> 3069e7bcd65Smrg </para> 3079e7bcd65Smrg </listitem> 3089e7bcd65Smrg <listitem> 3099e7bcd65Smrg <para> 3109e7bcd65Smrg<xref linkend='XtClass' xrefstyle='select: title'/>, 3119e7bcd65Smrg<function>XtSuperclass</function>, 3129e7bcd65Smrg<xref linkend='XtIsSubclass' xrefstyle='select: title'/>, 3139e7bcd65Smrg<xref linkend='XtCheckSubclass' xrefstyle='select: title'/>, 3149e7bcd65Smrg<function>XtIsObject</function>, 3159e7bcd65Smrg<function>XtIsRectObj</function>, 3169e7bcd65Smrg<function>XtIsWidget</function>, 3179e7bcd65Smrg<function>XtIsComposite</function>, 3189e7bcd65Smrg<function>XtIsConstraint</function>, 3199e7bcd65Smrg<function>XtIsShell</function>, 3209e7bcd65Smrg<function>XtIsOverrideShell</function>, 3219e7bcd65Smrg<function>XtIsWMShell</function>, 3229e7bcd65Smrg<function>XtIsVendorShell</function>, 3239e7bcd65Smrg<function>XtIsTransientShell</function>, 3249e7bcd65Smrg<function>XtIsToplevelShell</function>, 3259e7bcd65Smrg<function>XtIsApplicationShell</function>, 3269e7bcd65Smrg<function>XtIsSessionShell</function> 3279e7bcd65Smrg </para> 3289e7bcd65Smrg </listitem> 3299e7bcd65Smrg <listitem> 3309e7bcd65Smrg <para> 3319e7bcd65Smrg<xref linkend='XtIsManaged' xrefstyle='select: title'/>, 3329e7bcd65Smrg<xref linkend='XtIsSensitive' xrefstyle='select: title'/> 3339e7bcd65Smrg(both will return 3349e7bcd65Smrg<function>False</function> 3359e7bcd65Smrgif argument is not a subclass of 3369e7bcd65SmrgRectObj) 3379e7bcd65Smrg </para> 3389e7bcd65Smrg </listitem> 3399e7bcd65Smrg <listitem> 3409e7bcd65Smrg <para> 3419e7bcd65Smrg<xref linkend='XtIsRealized' xrefstyle='select: title'/> 3429e7bcd65Smrg(returns the state of the nearest windowed ancestor 3439e7bcd65Smrgif class of argument is not a subclass of 3449e7bcd65SmrgCore) 3459e7bcd65Smrg </para> 3469e7bcd65Smrg </listitem> 3479e7bcd65Smrg <listitem> 3489e7bcd65Smrg <para> 3499e7bcd65Smrg<xref linkend='XtWidgetToApplicationContext' xrefstyle='select: title'/> 3509e7bcd65Smrg </para> 3519e7bcd65Smrg </listitem> 3529e7bcd65Smrg <listitem> 3539e7bcd65Smrg <para> 3549e7bcd65Smrg<xref linkend='XtDestroyWidget' xrefstyle='select: title'/> 3559e7bcd65Smrg </para> 3569e7bcd65Smrg </listitem> 3579e7bcd65Smrg <listitem> 3589e7bcd65Smrg <para> 3599e7bcd65Smrg<function>XtParent</function>, 3609e7bcd65Smrg<xref linkend='XtDisplayOfObject' xrefstyle='select: title'/>, 3619e7bcd65Smrg<xref linkend='XtScreenOfObject' xrefstyle='select: title'/>, 3629e7bcd65Smrg<xref linkend='XtWindowOfObject' xrefstyle='select: title'/> 3639e7bcd65Smrg </para> 3649e7bcd65Smrg </listitem> 3659e7bcd65Smrg <listitem> 3669e7bcd65Smrg <para> 3679e7bcd65Smrg<xref linkend='XtSetKeyboardFocus' xrefstyle='select: title'/> 3689e7bcd65Smrg(descendant) 3699e7bcd65Smrg </para> 3709e7bcd65Smrg </listitem> 3719e7bcd65Smrg <listitem> 3729e7bcd65Smrg <para> 3739e7bcd65Smrg<xref linkend='XtGetGC' xrefstyle='select: title'/>, 3749e7bcd65Smrg<xref linkend='XtReleaseGC' xrefstyle='select: title'/> 3759e7bcd65Smrg </para> 3769e7bcd65Smrg </listitem> 3779e7bcd65Smrg <listitem> 3789e7bcd65Smrg <para> 3799e7bcd65Smrg<xref linkend='XtName' xrefstyle='select: title'/> 3809e7bcd65Smrg </para> 3819e7bcd65Smrg </listitem> 3829e7bcd65Smrg <listitem> 3839e7bcd65Smrg <para> 3849e7bcd65Smrg<xref linkend='XtSetValues' xrefstyle='select: title'/>, 3859e7bcd65Smrg<xref linkend='XtGetValues' xrefstyle='select: title'/>, 3869e7bcd65Smrg<xref linkend='XtVaSetValues' xrefstyle='select: title'/>, 3879e7bcd65Smrg<xref linkend='XtVaGetValues' xrefstyle='select: title'/> 3889e7bcd65Smrg </para> 3899e7bcd65Smrg </listitem> 3909e7bcd65Smrg <listitem> 3919e7bcd65Smrg <para> 3929e7bcd65Smrg<xref linkend='XtGetSubresources' xrefstyle='select: title'/>, 3939e7bcd65Smrg<xref linkend='XtGetApplicationResources' xrefstyle='select: title'/>, 3949e7bcd65Smrg<xref linkend='XtVaGetSubresources' xrefstyle='select: title'/>, 3959e7bcd65Smrg<xref linkend='XtVaGetApplicationResources' xrefstyle='select: title'/> 3969e7bcd65Smrg </para> 3979e7bcd65Smrg </listitem> 3989e7bcd65Smrg <listitem> 3999e7bcd65Smrg <para> 4009e7bcd65Smrg<xref linkend='XtConvert' xrefstyle='select: title'/>, 4019e7bcd65Smrg<xref linkend='XtConvertAndStore' xrefstyle='select: title'/> 4029e7bcd65Smrg </para> 4039e7bcd65Smrg </listitem> 4049e7bcd65Smrg</itemizedlist> 4059e7bcd65Smrg<para> 4069e7bcd65SmrgThe return value of the following procedures will be of class 4079e7bcd65SmrgObject 4089e7bcd65Smrgor a subclass: 4099e7bcd65Smrg</para> 4109e7bcd65Smrg<itemizedlist spacing='compact'> 4119e7bcd65Smrg <listitem> 4129e7bcd65Smrg <para> 4139e7bcd65Smrg<xref linkend='XtCreateWidget' xrefstyle='select: title'/>, 4149e7bcd65Smrg<xref linkend='XtVaCreateWidget' xrefstyle='select: title'/> 4159e7bcd65Smrg </para> 4169e7bcd65Smrg </listitem> 4179e7bcd65Smrg <listitem> 4189e7bcd65Smrg <para> 4199e7bcd65Smrg<function>XtParent</function> 4209e7bcd65Smrg </para> 4219e7bcd65Smrg </listitem> 4229e7bcd65Smrg <listitem> 4239e7bcd65Smrg <para> 4249e7bcd65Smrg<xref linkend='XtNameToWidget' xrefstyle='select: title'/> 4259e7bcd65Smrg </para> 4269e7bcd65Smrg </listitem> 4279e7bcd65Smrg</itemizedlist> 4289e7bcd65Smrg<para> 4299e7bcd65SmrgThe return value of the following procedures will be 4309e7bcd65Smrg<function>objectClass</function> 4319e7bcd65Smrgor a subclass: 4329e7bcd65Smrg</para> 4339e7bcd65Smrg<itemizedlist spacing='compact'> 4349e7bcd65Smrg <listitem> 4359e7bcd65Smrg <para> 4369e7bcd65Smrg<xref linkend='XtClass' xrefstyle='select: title'/>, 4379e7bcd65Smrg<function>XtSuperclass</function> 4389e7bcd65Smrg </para> 4399e7bcd65Smrg </listitem> 4409e7bcd65Smrg</itemizedlist> 4419e7bcd65Smrg</sect2> 4429e7bcd65Smrg 4439e7bcd65Smrg<sect2 id="Use_of_Objects"> 4449e7bcd65Smrg<title>Use of Objects</title> 4459e7bcd65Smrg<para> 4469e7bcd65SmrgThe 4479e7bcd65SmrgObject 4489e7bcd65Smrgclass exists to enable programmers to use the Intrinsics' 4499e7bcd65Smrgclassing and resource-handling mechanisms for things smaller 4509e7bcd65Smrgand simpler than widgets. 4519e7bcd65SmrgObjects make obsolete many common uses of subresources as described in 4529e7bcd65SmrgSections 9.4, 9.7.2.4, and 9.7.2.5. 4539e7bcd65Smrg</para> 4549e7bcd65Smrg 4559e7bcd65Smrg<para> 4569e7bcd65SmrgComposite 4579e7bcd65Smrgwidget classes that wish to accept nonwidget children must 4589e7bcd65Smrgset the <emphasis remap='I'>accepts_objects</emphasis> field in the 4599e7bcd65Smrg<function>CompositeClassExtension</function> 4609e7bcd65Smrgstructure to 4619e7bcd65Smrg<function>True</function>. 4629e7bcd65Smrg<xref linkend='XtCreateWidget' xrefstyle='select: title'/> 4639e7bcd65Smrgwill otherwise generate an error message on an attempt to create a 4649e7bcd65Smrgnonwidget child. 4659e7bcd65Smrg</para> 4669e7bcd65Smrg 4679e7bcd65Smrg<para> 4689e7bcd65SmrgOf the classes defined by the Intrinsics, 4699e7bcd65SmrgApplicationShell 4709e7bcd65Smrgand 4719e7bcd65SmrgSessionShell 4729e7bcd65Smrgaccept nonwidget children, and the class of any nonwidget child 4739e7bcd65Smrgmust not be 4749e7bcd65Smrg<function>rectObjClass</function> 4759e7bcd65Smrgor any subclass. The intent of allowing 4769e7bcd65SmrgObject 4779e7bcd65Smrgchildren of 4789e7bcd65SmrgApplicationShell 4799e7bcd65Smrgand 4809e7bcd65SmrgSessionShell 4819e7bcd65Smrgis to provide clients a simple mechanism 4829e7bcd65Smrgfor establishing the resource-naming root of an object hierarchy. 4839e7bcd65Smrg</para> 4849e7bcd65Smrg</sect2> 4859e7bcd65Smrg</sect1> 4869e7bcd65Smrg 4879e7bcd65Smrg<sect1 id="Rectangle_Objects"> 4889e7bcd65Smrg<title>Rectangle Objects</title> 4899e7bcd65Smrg<para> 4909e7bcd65SmrgThe class of rectangle objects is a subclass of 4919e7bcd65SmrgObject 4929e7bcd65Smrgthat represents 4939e7bcd65Smrgrectangular areas. It encapsulates the mechanisms for geometry 4949e7bcd65Smrgmanagement and is called RectObj 4959e7bcd65Smrgto avoid conflict with the Xlib 4969e7bcd65Smrg<function>Rectangle</function> 4979e7bcd65Smrgdata type. 4989e7bcd65Smrg</para> 4999e7bcd65Smrg<sect2 id="RectObjClassPart_Structure"> 5009e7bcd65Smrg<title>RectObjClassPart Structure</title> 5019e7bcd65Smrg<para> 5029e7bcd65SmrgAs with the 5039e7bcd65Smrg<function>ObjectClassPart</function> 5049e7bcd65Smrgstructure, all fields in the 5059e7bcd65Smrg<function>RectObjClassPart</function> 5069e7bcd65Smrgstructure have the same 5079e7bcd65Smrgpurpose and function as the corresponding fields in 5089e7bcd65Smrg<function>CoreClassPart</function>; 5099e7bcd65Smrgfields whose names are rect<emphasis remap='I'>n</emphasis> for some integer 5109e7bcd65Smrg<emphasis remap='I'>n</emphasis> are not used for 5119e7bcd65SmrgRectObj, but exist to pad the data structure so that it matches 5129e7bcd65SmrgCore's 5139e7bcd65Smrgclass record. The class record initialization must fill all 5149e7bcd65Smrgrect<emphasis remap='I'>n</emphasis> fields with NULL or zero as appropriate to the type. 5159e7bcd65Smrg</para> 5169e7bcd65Smrg<literallayout > 5179e7bcd65Smrgtypedef struct _RectObjClassPart { 5189e7bcd65Smrg WidgetClass superclass; 5199e7bcd65Smrg String class_name; 5209e7bcd65Smrg Cardinal widget_size; 5219e7bcd65Smrg XtProc class_initialize; 5229e7bcd65Smrg XtWidgetClassProc class_part_initialize; 5239e7bcd65Smrg XtEnum class_inited; 5249e7bcd65Smrg XtInitProc initialize; 5259e7bcd65Smrg XtArgsProc initialize_hook; 5269e7bcd65Smrg XtProc rect1; 5279e7bcd65Smrg XtPointer rect2; 5289e7bcd65Smrg Cardinal rect3; 5299e7bcd65Smrg XtResourceList resources; 5309e7bcd65Smrg Cardinal num_resources; 5319e7bcd65Smrg XrmClass xrm_class; 5329e7bcd65Smrg Boolean rect4; 5339e7bcd65Smrg XtEnum rect5; 5349e7bcd65Smrg Boolean rect6; 5359e7bcd65Smrg Boolean rect7; 5369e7bcd65Smrg XtWidgetProc destroy; 5379e7bcd65Smrg XtWidgetProc resize; 5389e7bcd65Smrg XtExposeProc expose; 5399e7bcd65Smrg XtSetValuesFunc set_values; 5409e7bcd65Smrg XtArgsFunc set_values_hook; 5419e7bcd65Smrg XtAlmostProc set_values_almost; 5429e7bcd65Smrg XtArgsProc get_values_hook; 5439e7bcd65Smrg XtProc rect9; 5449e7bcd65Smrg XtVersionType version; 5459e7bcd65Smrg XtPointer callback_private; 5469e7bcd65Smrg String rect10; 5479e7bcd65Smrg XtGeometryHandler query_geometry; 5489e7bcd65Smrg XtProc rect11; 5499e7bcd65Smrg XtPointer extension ; 5509e7bcd65Smrg} RectObjClassPart; 5519e7bcd65Smrg</literallayout> 5529e7bcd65Smrg<para> 5539e7bcd65SmrgThe 5549e7bcd65SmrgRectObj 5559e7bcd65Smrgclass record consists of just the 5569e7bcd65Smrg<function>RectObjClassPart</function>. 5579e7bcd65Smrg</para> 5589e7bcd65Smrg<literallayout > 5599e7bcd65Smrgtypedef struct _RectObjClassRec { 5609e7bcd65Smrg RectObjClassPart rect_class; 5619e7bcd65Smrg} RectObjClassRec, *RectObjClass; 5629e7bcd65Smrg</literallayout> 5639e7bcd65Smrg<para> 5649e7bcd65SmrgThe predefined class record and pointer for 5659e7bcd65Smrg<function>RectObjClassRec</function> 5669e7bcd65Smrgare 5679e7bcd65Smrg</para> 5689e7bcd65Smrg 5699e7bcd65Smrg<para> 5709e7bcd65SmrgIn 5719e7bcd65Smrg<function>Intrinsic.h</function>: 5729e7bcd65Smrg</para> 5739e7bcd65Smrg<literallayout > 5749e7bcd65Smrgextern RectObjClassRec rectObjClassRec; 5759e7bcd65Smrg</literallayout> 5769e7bcd65Smrg<para> 5779e7bcd65SmrgIn 5789e7bcd65Smrg<function>Intrinsic.h</function>: 5799e7bcd65Smrg</para> 5809e7bcd65Smrg<literallayout > 5819e7bcd65Smrgextern WidgetClass rectObjClass; 5829e7bcd65Smrg</literallayout> 5839e7bcd65Smrg<para> 5849e7bcd65SmrgThe opaque types 5859e7bcd65Smrg<function>RectObj</function> 5869e7bcd65Smrgand 5879e7bcd65Smrg<function>RectObjClass</function> 5889e7bcd65Smrgand the opaque variable 5899e7bcd65Smrg<function>rectObjClass</function> 5909e7bcd65Smrgare defined for generic actions on objects 5919e7bcd65Smrgwhose class is RectObj or a subclass of 5929e7bcd65SmrgRectObj. 5939e7bcd65Smrg<function>Intrinsic.h</function> 5949e7bcd65Smrguses an incomplete structure definition to ensure that the compiler 5959e7bcd65Smrgcatches attempts to access private data: 5969e7bcd65Smrg</para> 5979e7bcd65Smrg<literallayout > 5989e7bcd65Smrgtypedef struct _RectObjClassRec* RectObjClass; 5999e7bcd65Smrg</literallayout> 6009e7bcd65Smrg 6019e7bcd65Smrg</sect2> 6029e7bcd65Smrg 6039e7bcd65Smrg<sect2 id="RectObjPart_Structure"> 6049e7bcd65Smrg<title>RectObjPart Structure</title> 6059e7bcd65Smrg<para> 6069e7bcd65SmrgIn addition to the 6079e7bcd65Smrg<function>ObjectPart</function> 6089e7bcd65Smrgfields, 6099e7bcd65SmrgRectObj 6109e7bcd65Smrgobjects have the following fields defined in the 6119e7bcd65Smrg<function>RectObjPart</function> 6129e7bcd65Smrgstructure. All fields have the same meaning as the corresponding field in 6139e7bcd65Smrg<function>CorePart</function>. 6149e7bcd65Smrg</para> 6159e7bcd65Smrg<literallayout > 6169e7bcd65Smrgtypedef struct _RectObjPart { 6179e7bcd65Smrg Position x, y; 6189e7bcd65Smrg Dimension width, height; 6199e7bcd65Smrg Dimension border_width; 6209e7bcd65Smrg Boolean managed; 6219e7bcd65Smrg Boolean sensitive; 6229e7bcd65Smrg Boolean ancestor_sensitive; 6239e7bcd65Smrg} RectObjPart; 6249e7bcd65Smrg</literallayout> 6259e7bcd65Smrg<para> 6269e7bcd65SmrgRectObj 6279e7bcd65Smrgobjects have the RectObj fields immediately following the Object fields. 6289e7bcd65Smrg</para> 6299e7bcd65Smrg<literallayout > 6309e7bcd65Smrgtypedef struct _RectObjRec { 6319e7bcd65Smrg ObjectPart object; 6329e7bcd65Smrg RectObjPart rectangle; 6339e7bcd65Smrg} RectObjRec, *RectObj; 6349e7bcd65Smrg</literallayout> 6359e7bcd65Smrg<para> 6369e7bcd65SmrgIn 6379e7bcd65Smrg<function>Intrinsic.h</function>: 6389e7bcd65Smrg</para> 6399e7bcd65Smrg<literallayout > 6409e7bcd65Smrgtypedef struct _RectObjRec* RectObj; 6419e7bcd65Smrg</literallayout> 6429e7bcd65Smrg 6439e7bcd65Smrg</sect2> 6449e7bcd65Smrg 6459e7bcd65Smrg<sect2 id="RectObj_Resources"> 6469e7bcd65Smrg<title>RectObj Resources</title> 6479e7bcd65Smrg<para> 6489e7bcd65SmrgThe resource names, classes, and representation types that are specified in the 6499e7bcd65Smrg<function>rectObjClassRec</function> 6509e7bcd65Smrgresource list are: 6519e7bcd65Smrg<informaltable frame='topbot'> 6529e7bcd65Smrg <?dbfo keep-together="always" ?> 6539e7bcd65Smrg <tgroup cols='3' align='left' colsep='0' rowsep='0'> 6549e7bcd65Smrg <colspec colwidth='1.0*' colname='c1'/> 6559e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 6569e7bcd65Smrg <colspec colwidth='1.0*' colname='c3'/> 6579e7bcd65Smrg <thead> 6589e7bcd65Smrg <row rowsep='1'> 6599e7bcd65Smrg <entry>Name</entry> 6609e7bcd65Smrg <entry>Class</entry> 6619e7bcd65Smrg <entry>Representation</entry> 6629e7bcd65Smrg </row> 6639e7bcd65Smrg </thead> 6649e7bcd65Smrg <tbody> 6659e7bcd65Smrg <row> 6669e7bcd65Smrg <entry>XtNancestorSensitive</entry> 6679e7bcd65Smrg <entry>XtCSensitive</entry> 6689e7bcd65Smrg <entry>XtRBoolean</entry> 6699e7bcd65Smrg </row> 6709e7bcd65Smrg <row> 6719e7bcd65Smrg <entry>XtNborderWidth</entry> 6729e7bcd65Smrg <entry>XtCBorderWidth</entry> 6739e7bcd65Smrg <entry>XtRDimension</entry> 6749e7bcd65Smrg </row> 6759e7bcd65Smrg <row> 6769e7bcd65Smrg <entry>XtNheight</entry> 6779e7bcd65Smrg <entry>XtCHeight</entry> 6789e7bcd65Smrg <entry>XtRDimension</entry> 6799e7bcd65Smrg </row> 6809e7bcd65Smrg <row> 6819e7bcd65Smrg <entry>XtNsensitive</entry> 6829e7bcd65Smrg <entry>XtCSensitive</entry> 6839e7bcd65Smrg <entry>XtRBoolean</entry> 6849e7bcd65Smrg </row> 6859e7bcd65Smrg <row> 6869e7bcd65Smrg <entry>XtNwidth</entry> 6879e7bcd65Smrg <entry>XtCWidth</entry> 6889e7bcd65Smrg <entry>XtRDimension</entry> 6899e7bcd65Smrg </row> 6909e7bcd65Smrg <row> 6919e7bcd65Smrg <entry>XtNx</entry> 6929e7bcd65Smrg <entry>XtCPosition</entry> 6939e7bcd65Smrg <entry>XtRPosition</entry> 6949e7bcd65Smrg </row> 6959e7bcd65Smrg <row> 6969e7bcd65Smrg <entry>XtNy</entry> 6979e7bcd65Smrg <entry>XtCPosition</entry> 6989e7bcd65Smrg <entry>XtRPosition</entry> 6999e7bcd65Smrg </row> 7009e7bcd65Smrg </tbody> 7019e7bcd65Smrg </tgroup> 7029e7bcd65Smrg</informaltable> 7039e7bcd65Smrg</para> 7049e7bcd65Smrg</sect2> 7059e7bcd65Smrg 7069e7bcd65Smrg<sect2 id="RectObjPart_Default_Values"> 7079e7bcd65Smrg<title>RectObjPart Default Values</title> 7089e7bcd65Smrg<para> 7099e7bcd65SmrgAll fields in 7109e7bcd65Smrg<function>RectObjPart</function> 7119e7bcd65Smrghave the same default values as the corresponding fields in 7129e7bcd65Smrg<function>CorePart</function>. 7139e7bcd65Smrg</para> 7149e7bcd65Smrg</sect2> 7159e7bcd65Smrg 7169e7bcd65Smrg<sect2 id="Widget_Arguments_to_xI_Routines"> 7179e7bcd65Smrg<title>Widget Arguments to Intrinsics Routines</title> 7189e7bcd65Smrg<para> 7199e7bcd65SmrgThe WidgetClass arguments to the following procedures may be 7209e7bcd65Smrg<function>rectObjClass</function> 7219e7bcd65Smrgor any subclass: 7229e7bcd65Smrg</para> 7239e7bcd65Smrg<itemizedlist spacing='compact'> 7249e7bcd65Smrg <listitem> 7259e7bcd65Smrg <para> 7269e7bcd65Smrg<xref linkend='XtCreateManagedWidget' xrefstyle='select: title'/>, 7279e7bcd65Smrg<xref linkend='XtVaCreateManagedWidget' xrefstyle='select: title'/> 7289e7bcd65Smrg </para> 7299e7bcd65Smrg </listitem> 7309e7bcd65Smrg</itemizedlist> 7319e7bcd65Smrg<para> 7329e7bcd65SmrgThe Widget arguments to the following procedures may be of class 7339e7bcd65SmrgRectObj 7349e7bcd65Smrgor any subclass: 7359e7bcd65Smrg</para> 7369e7bcd65Smrg<itemizedlist spacing='compact'> 7379e7bcd65Smrg <listitem> 7389e7bcd65Smrg <para> 7399e7bcd65Smrg<xref linkend='XtConfigureWidget' xrefstyle='select: title'/>, 7409e7bcd65Smrg<xref linkend='XtMoveWidget' xrefstyle='select: title'/>, 7419e7bcd65Smrg<xref linkend='XtResizeWidget' xrefstyle='select: title'/> 7429e7bcd65Smrg </para> 7439e7bcd65Smrg </listitem> 7449e7bcd65Smrg <listitem> 7459e7bcd65Smrg <para> 7469e7bcd65Smrg<xref linkend='XtMakeGeometryRequest' xrefstyle='select: title'/>, 7479e7bcd65Smrg<xref linkend='XtMakeResizeRequest' xrefstyle='select: title'/> 7489e7bcd65Smrg </para> 7499e7bcd65Smrg </listitem> 7509e7bcd65Smrg <listitem> 7519e7bcd65Smrg <para> 7529e7bcd65Smrg<xref linkend='XtManageChildren' xrefstyle='select: title'/>, 7539e7bcd65Smrg<xref linkend='XtManageChild' xrefstyle='select: title'/>, 7549e7bcd65Smrg<xref linkend='XtUnmanageChildren' xrefstyle='select: title'/>, 7559e7bcd65Smrg<xref linkend='XtUnmanageChild' xrefstyle='select: title'/>, 7569e7bcd65Smrg<xref linkend='XtChangeManagedSet' xrefstyle='select: title'/> 7579e7bcd65Smrg </para> 7589e7bcd65Smrg </listitem> 7599e7bcd65Smrg <listitem> 7609e7bcd65Smrg <para> 7619e7bcd65Smrg<xref linkend='XtQueryGeometry' xrefstyle='select: title'/> 7629e7bcd65Smrg </para> 7639e7bcd65Smrg </listitem> 7649e7bcd65Smrg <listitem> 7659e7bcd65Smrg <para> 7669e7bcd65Smrg<xref linkend='XtSetSensitive' xrefstyle='select: title'/> 7679e7bcd65Smrg </para> 7689e7bcd65Smrg </listitem> 7699e7bcd65Smrg <listitem> 7709e7bcd65Smrg <para> 7719e7bcd65Smrg<xref linkend='XtTranslateCoords' xrefstyle='select: title'/> 7729e7bcd65Smrg </para> 7739e7bcd65Smrg </listitem> 7749e7bcd65Smrg</itemizedlist> 7759e7bcd65Smrg<para> 7769e7bcd65SmrgThe return value of the following procedures will be of class 7779e7bcd65SmrgRectObj 7789e7bcd65Smrgor a subclass: 7799e7bcd65Smrg</para> 7809e7bcd65Smrg<itemizedlist spacing='compact'> 7819e7bcd65Smrg <listitem> 7829e7bcd65Smrg <para> 7839e7bcd65Smrg<xref linkend='XtCreateManagedWidget' xrefstyle='select: title'/>, 7849e7bcd65Smrg<xref linkend='XtVaCreateManagedWidget' xrefstyle='select: title'/> 7859e7bcd65Smrg </para> 7869e7bcd65Smrg </listitem> 7879e7bcd65Smrg</itemizedlist> 7889e7bcd65Smrg</sect2> 7899e7bcd65Smrg 7909e7bcd65Smrg<sect2 id="Use_of_Rectangle_Objects"> 7919e7bcd65Smrg<title>Use of Rectangle Objects</title> 7929e7bcd65Smrg<para> 7939e7bcd65SmrgRectObj 7949e7bcd65Smrgcan be subclassed to provide widgetlike objects (sometimes 7959e7bcd65Smrgcalled gadgets) that do not use windows and do not have those 7969e7bcd65Smrgfeatures that are seldom used in simple widgets. This can save memory 7979e7bcd65Smrgresources both in the server and in applications 7989e7bcd65Smrgbut requires additional support code in the parent. 7999e7bcd65SmrgIn the following 8009e7bcd65Smrgdiscussion, <emphasis remap='I'>rectobj</emphasis> refers only to objects 8019e7bcd65Smrgwhose class is RectObj or a subclass of 8029e7bcd65SmrgRectObj, 8039e7bcd65Smrgbut not Core or a subclass of 8049e7bcd65SmrgCore. 8059e7bcd65Smrg</para> 8069e7bcd65Smrg 8079e7bcd65Smrg<para> 8089e7bcd65SmrgComposite 8099e7bcd65Smrgwidget classes that wish to accept rectobj children must set 8109e7bcd65Smrgthe <emphasis remap='I'>accepts_objects</emphasis> field in the 8119e7bcd65Smrg<function>CompositeClassExtension</function> 8129e7bcd65Smrgextension structure to 8139e7bcd65Smrg<function>True</function>. 8149e7bcd65Smrg<xref linkend='XtCreateWidget' xrefstyle='select: title'/> 8159e7bcd65Smrgor 8169e7bcd65Smrg<xref linkend='XtCreateManagedWidget' xrefstyle='select: title'/> 8179e7bcd65Smrgwill otherwise generate an error if called to create a nonwidget child. 8189e7bcd65SmrgIf the composite widget supports only children of class 8199e7bcd65SmrgRectObj 8209e7bcd65Smrgor a subclass (i.e., not of the general Object class), it 8219e7bcd65Smrgmust declare an insert_child procedure and check the subclass of each 8229e7bcd65Smrgnew child in that procedure. None of the classes defined by the 8239e7bcd65SmrgIntrinsics accept rectobj children. 8249e7bcd65Smrg</para> 8259e7bcd65Smrg 8269e7bcd65Smrg<para> 8279e7bcd65SmrgIf gadgets are defined in an object set, the parent is responsible for 8289e7bcd65Smrgmuch more than the parent of a widget. The parent must request and handle 8299e7bcd65Smrginput events that occur for the gadget and is responsible for making 8309e7bcd65Smrgsure that when it receives an exposure event the gadget children get 8319e7bcd65Smrgdrawn correctly. 8329e7bcd65SmrgRectobj children may 8339e7bcd65Smrghave expose procedures 8349e7bcd65Smrgspecified in their class records, but the parent is free to 8359e7bcd65Smrgignore them, instead drawing the contents of the child itself. This 8369e7bcd65Smrgcan potentially save graphics context switching. The precise contents 8379e7bcd65Smrgof the exposure event and region arguments to the RectObj expose 8389e7bcd65Smrgprocedure are not specified by the Intrinsics; a particular rectangle object is 8399e7bcd65Smrgfree to define the coordinate system origin (self-relative or 8409e7bcd65Smrgparent-relative) and whether or not the rectangle or region is assumed to 8419e7bcd65Smrghave been intersected with the visible region of the object. 8429e7bcd65Smrg</para> 8439e7bcd65Smrg 8449e7bcd65Smrg<para> 8459e7bcd65SmrgIn general, it is expected that a composite widget that accepts 8469e7bcd65Smrgnonwidget children will document those children it is able to handle, 8479e7bcd65Smrgsince a gadget cannot be viewed as a completely self-contained entity, 8489e7bcd65Smrgas can a widget. Since a particular composite widget class is usually 8499e7bcd65Smrgdesigned to handle nonwidget children of only a limited set of classes, it should 8509e7bcd65Smrgcheck the classes of newly added children in its insert_child 8519e7bcd65Smrgprocedure to make sure that it can deal with them. 8529e7bcd65Smrg</para> 8539e7bcd65Smrg 8549e7bcd65Smrg<para> 8559e7bcd65SmrgThe Intrinsics will clear areas of a parent window obscured by 8569e7bcd65Smrgrectobj children, causing exposure events, under the following 8579e7bcd65Smrgcircumstances: 8589e7bcd65Smrg</para> 8599e7bcd65Smrg<itemizedlist spacing='compact'> 8609e7bcd65Smrg <listitem> 8619e7bcd65Smrg <para> 8629e7bcd65SmrgA rectobj child is managed or unmanaged. 8639e7bcd65Smrg </para> 8649e7bcd65Smrg </listitem> 8659e7bcd65Smrg <listitem> 8669e7bcd65Smrg <para> 8679e7bcd65SmrgIn a call to 8689e7bcd65Smrg<xref linkend='XtSetValues' xrefstyle='select: title'/> 8699e7bcd65Smrgon a rectobj child, one or more of the set_values procedures returns 8709e7bcd65Smrg<function>True</function>. 8719e7bcd65Smrg </para> 8729e7bcd65Smrg </listitem> 8739e7bcd65Smrg <listitem> 8749e7bcd65Smrg <para> 8759e7bcd65SmrgIn a call to 8769e7bcd65Smrg<xref linkend='XtConfigureWidget' xrefstyle='select: title'/> 8779e7bcd65Smrgon a rectobj child, areas will 8789e7bcd65Smrgbe cleared corresponding to both the old and the new child 8799e7bcd65Smrggeometries, including the border, if the geometry changes. 8809e7bcd65Smrg </para> 8819e7bcd65Smrg </listitem> 8829e7bcd65Smrg <listitem> 8839e7bcd65Smrg <para> 8849e7bcd65SmrgIn a call to 8859e7bcd65Smrg<xref linkend='XtMoveWidget' xrefstyle='select: title'/> 8869e7bcd65Smrgon a rectobj child, areas will be 8879e7bcd65Smrgcleared corresponding to both the old and the new child 8889e7bcd65Smrggeometries, including the border, if the geometry changes. 8899e7bcd65Smrg </para> 8909e7bcd65Smrg </listitem> 8919e7bcd65Smrg <listitem> 8929e7bcd65Smrg <para> 8939e7bcd65SmrgIn a call to 8949e7bcd65Smrg<xref linkend='XtResizeWidget' xrefstyle='select: title'/> 8959e7bcd65Smrgon a rectobj child, a single 8969e7bcd65Smrgrectangle will be cleared corresponding to the larger of the 8979e7bcd65Smrgold and the new child geometries if they are different. 8989e7bcd65Smrg </para> 8999e7bcd65Smrg </listitem> 9009e7bcd65Smrg <listitem> 9019e7bcd65Smrg <para> 9029e7bcd65SmrgIn a call to 9039e7bcd65Smrg<xref linkend='XtMakeGeometryRequest' xrefstyle='select: title'/> 9049e7bcd65Smrg(or 9059e7bcd65Smrg<xref linkend='XtMakeResizeRequest' xrefstyle='select: title'/>) 9069e7bcd65Smrgon a rectobj child with 9079e7bcd65Smrg<function>XtQueryOnly</function> 9089e7bcd65Smrgnot set, if the manager returns 9099e7bcd65Smrg<function>XtGeometryYes</function>, 9109e7bcd65Smrgtwo rectangles will be cleared corresponding to both the old and 9119e7bcd65Smrgthe new child geometries. 9129e7bcd65Smrg </para> 9139e7bcd65Smrg </listitem> 9149e7bcd65Smrg</itemizedlist> 9159e7bcd65Smrg<para> 9169e7bcd65SmrgStacking order is not supported for rectobj children. Composite widgets with 9179e7bcd65Smrgrectobj children are free to define any semantics desired if the child 9189e7bcd65Smrggeometries overlap, including making this an error. 9199e7bcd65Smrg</para> 9209e7bcd65Smrg 9219e7bcd65Smrg<para> 9229e7bcd65SmrgWhen a rectobj is playing the role of a widget, developers must be 9239e7bcd65Smrgreminded to avoid making assumptions about the object passed in the 9249e7bcd65SmrgWidget argument to a callback procedure. 9259e7bcd65Smrg</para> 9269e7bcd65Smrg</sect2> 9279e7bcd65Smrg</sect1> 9289e7bcd65Smrg 9299e7bcd65Smrg<sect1 id="Undeclared_Class"> 9309e7bcd65Smrg<title>Undeclared Class</title> 9319e7bcd65Smrg<para> 9329e7bcd65SmrgThe Intrinsics define an unnamed class between 9339e7bcd65SmrgRectObj 9349e7bcd65Smrgand 9359e7bcd65SmrgCore 9369e7bcd65Smrgfor possible future use by the X Consortium. The only assumptions that 9379e7bcd65Smrgmay be made about the unnamed class are 9389e7bcd65Smrg</para> 9399e7bcd65Smrg<itemizedlist spacing='compact'> 9409e7bcd65Smrg <listitem> 9419e7bcd65Smrg <para> 9429e7bcd65SmrgThe <emphasis remap='I'>core_class.superclass</emphasis> field of 9439e7bcd65Smrg<function>coreWidgetClassRec</function> 9449e7bcd65Smrgcontains a pointer to the unnamed class record. 9459e7bcd65Smrg </para> 9469e7bcd65Smrg </listitem> 9479e7bcd65Smrg <listitem> 9489e7bcd65Smrg <para> 9499e7bcd65SmrgA pointer to the unnamed class record when dereferenced as an 9509e7bcd65Smrg<function>ObjectClass</function> 9519e7bcd65Smrgwill contain a pointer to 9529e7bcd65Smrg<function>rectObjClassRec</function> 9539e7bcd65Smrgin its <emphasis remap='I'>object_class.superclass</emphasis> field. 9549e7bcd65Smrg </para> 9559e7bcd65Smrg </listitem> 9569e7bcd65Smrg</itemizedlist> 9579e7bcd65Smrg<para> 9589e7bcd65SmrgExcept for the above, the contents of the class record for this class 9599e7bcd65Smrgand the result of an attempt to subclass or to create a widget of this 9609e7bcd65Smrgunnamed class are undefined. 9619e7bcd65Smrg</para> 9629e7bcd65Smrg</sect1> 9639e7bcd65Smrg 9649e7bcd65Smrg<sect1 id="Widget_Arguments_to_Intrinsics_Routines"> 9659e7bcd65Smrg<title>Widget Arguments to Intrinsics Routines</title> 9669e7bcd65Smrg<para> 9679e7bcd65SmrgThe WidgetClass arguments to the following procedures must be of class 9689e7bcd65SmrgShell 9699e7bcd65Smrgor a subclass: 9709e7bcd65Smrg</para> 9719e7bcd65Smrg<itemizedlist spacing='compact'> 9729e7bcd65Smrg <listitem> 9739e7bcd65Smrg <para> 9749e7bcd65Smrg<xref linkend='XtCreatePopupShell' xrefstyle='select: title'/>, 9759e7bcd65Smrg<xref linkend='XtVaCreatePopupShell' xrefstyle='select: title'/>, 9769e7bcd65Smrg<xref linkend='XtAppCreateShell' xrefstyle='select: title'/>, 9779e7bcd65Smrg<xref linkend='XtVaAppCreateShell' xrefstyle='select: title'/>, 9789e7bcd65Smrg<xref linkend='XtOpenApplication' xrefstyle='select: title'/>, 9799e7bcd65Smrg<xref linkend='XtVaOpenApplication' xrefstyle='select: title'/> 9809e7bcd65Smrg </para> 9819e7bcd65Smrg </listitem> 9829e7bcd65Smrg</itemizedlist> 9839e7bcd65Smrg<para> 9849e7bcd65SmrgThe Widget arguments to the following procedures must be of class 9859e7bcd65SmrgCore 9869e7bcd65Smrgor any subclass: 9879e7bcd65Smrg</para> 9889e7bcd65Smrg<itemizedlist spacing='compact'> 9899e7bcd65Smrg <listitem> 9909e7bcd65Smrg <para> 9919e7bcd65Smrg<xref linkend='XtCreatePopupShell' xrefstyle='select: title'/>, 9929e7bcd65Smrg<xref linkend='XtVaCreatePopupShell' xrefstyle='select: title'/> 9939e7bcd65Smrg </para> 9949e7bcd65Smrg </listitem> 9959e7bcd65Smrg <listitem> 9969e7bcd65Smrg <para> 9979e7bcd65Smrg<xref linkend='XtAddEventHandler' xrefstyle='select: title'/>, 9989e7bcd65Smrg<xref linkend='XtAddRawEventHandler' xrefstyle='select: title'/>, 9999e7bcd65Smrg<xref linkend='XtRemoveEventHandler' xrefstyle='select: title'/>, 10009e7bcd65Smrg<xref linkend='XtRemoveRawEventHandler' xrefstyle='select: title'/>, 10019e7bcd65Smrg<xref linkend='XtInsertEventHandler' xrefstyle='select: title'/>, 10029e7bcd65Smrg<xref linkend='XtInsertRawEventHandler' xrefstyle='select: title'/> 10039e7bcd65Smrg<xref linkend='XtInsertEventTypeHandler' xrefstyle='select: title'/>, 10049e7bcd65Smrg<xref linkend='XtRemoveEventTypeHandler' xrefstyle='select: title'/>, 10059e7bcd65Smrg </para> 10069e7bcd65Smrg </listitem> 10079e7bcd65Smrg <listitem> 10089e7bcd65Smrg <para> 10099e7bcd65Smrg<xref linkend='XtRegisterDrawable' xrefstyle='select: title'/> 10109e7bcd65Smrg<xref linkend='XtDispatchEventToWidget' xrefstyle='select: title'/> 10119e7bcd65Smrg </para> 10129e7bcd65Smrg </listitem> 10139e7bcd65Smrg <listitem> 10149e7bcd65Smrg <para> 10159e7bcd65Smrg<xref linkend='XtAddGrab' xrefstyle='select: title'/>, 10169e7bcd65Smrg<xref linkend='XtRemoveGrab' xrefstyle='select: title'/>, 10179e7bcd65Smrg<xref linkend='XtGrabKey' xrefstyle='select: title'/>, 10189e7bcd65Smrg<xref linkend='XtGrabKeyboard' xrefstyle='select: title'/>, 10199e7bcd65Smrg<xref linkend='XtUngrabKey' xrefstyle='select: title'/>, 10209e7bcd65Smrg<xref linkend='XtUngrabKeyboard' xrefstyle='select: title'/>, 10219e7bcd65Smrg<xref linkend='XtGrabButton' xrefstyle='select: title'/>, 10229e7bcd65Smrg<xref linkend='XtGrabPointer' xrefstyle='select: title'/>, 10239e7bcd65Smrg<xref linkend='XtUngrabButton' xrefstyle='select: title'/>, 10249e7bcd65Smrg<xref linkend='XtUngrabPointer' xrefstyle='select: title'/> 10259e7bcd65Smrg </para> 10269e7bcd65Smrg </listitem> 10279e7bcd65Smrg <listitem> 10289e7bcd65Smrg <para> 10299e7bcd65Smrg<xref linkend='XtBuildEventMask' xrefstyle='select: title'/> 10309e7bcd65Smrg </para> 10319e7bcd65Smrg </listitem> 10329e7bcd65Smrg <listitem> 10339e7bcd65Smrg <para> 10349e7bcd65Smrg<xref linkend='XtCreateWindow' xrefstyle='select: title'/>, 10359e7bcd65Smrg<function>XtDisplay</function>, 10369e7bcd65Smrg<xref linkend='XtScreen' xrefstyle='select: title'/>, 10379e7bcd65Smrg<xref linkend='XtWindow' xrefstyle='select: title'/> 10389e7bcd65Smrg </para> 10399e7bcd65Smrg </listitem> 10409e7bcd65Smrg <listitem> 10419e7bcd65Smrg <para> 10429e7bcd65Smrg<xref linkend='XtNameToWidget' xrefstyle='select: title'/> 10439e7bcd65Smrg </para> 10449e7bcd65Smrg </listitem> 10459e7bcd65Smrg <listitem> 10469e7bcd65Smrg <para> 10479e7bcd65Smrg<xref linkend='XtGetSelectionValue' xrefstyle='select: title'/>, 10489e7bcd65Smrg<xref linkend='XtGetSelectionValues' xrefstyle='select: title'/>, 10499e7bcd65Smrg<xref linkend='XtOwnSelection' xrefstyle='select: title'/>, 10509e7bcd65Smrg<xref linkend='XtDisownSelection' xrefstyle='select: title'/>, 10519e7bcd65Smrg<xref linkend='XtOwnSelectionIncremental' xrefstyle='select: title'/>, 10529e7bcd65Smrg<xref linkend='XtGetSelectionValueIncremental' xrefstyle='select: title'/>, 10539e7bcd65Smrg<xref linkend='XtGetSelectionValuesIncremental' xrefstyle='select: title'/>, 10549e7bcd65Smrg<xref linkend='XtGetSelectionRequest' xrefstyle='select: title'/> 10559e7bcd65Smrg </para> 10569e7bcd65Smrg </listitem> 10579e7bcd65Smrg <listitem> 10589e7bcd65Smrg <para> 10599e7bcd65Smrg<xref linkend='XtInstallAccelerators' xrefstyle='select: title'/>, 10609e7bcd65Smrg<xref linkend='XtInstallAllAccelerators' xrefstyle='select: title'/> 10619e7bcd65Smrg(both destination and source) 10629e7bcd65Smrg </para> 10639e7bcd65Smrg </listitem> 10649e7bcd65Smrg <listitem> 10659e7bcd65Smrg <para> 10669e7bcd65Smrg<xref linkend='XtAugmentTranslations' xrefstyle='select: title'/>, 10679e7bcd65Smrg<xref linkend='XtOverrideTranslations' xrefstyle='select: title'/>, 10689e7bcd65Smrg<xref linkend='XtUninstallTranslations' xrefstyle='select: title'/>, 10699e7bcd65Smrg<xref linkend='XtCallActionProc' xrefstyle='select: title'/> 10709e7bcd65Smrg </para> 10719e7bcd65Smrg </listitem> 10729e7bcd65Smrg <listitem> 10739e7bcd65Smrg <para> 10749e7bcd65Smrg<xref linkend='XtMapWidget' xrefstyle='select: title'/>, 10759e7bcd65Smrg<xref linkend='XtUnmapWidget' xrefstyle='select: title'/> 10769e7bcd65Smrg </para> 10779e7bcd65Smrg </listitem> 10789e7bcd65Smrg <listitem> 10799e7bcd65Smrg <para> 10809e7bcd65Smrg<xref linkend='XtRealizeWidget' xrefstyle='select: title'/>, 10819e7bcd65Smrg<xref linkend='XtUnrealizeWidget' xrefstyle='select: title'/> 10829e7bcd65Smrg </para> 10839e7bcd65Smrg </listitem> 10849e7bcd65Smrg <listitem> 10859e7bcd65Smrg <para> 10869e7bcd65Smrg<xref linkend='XtSetMappedWhenManaged' xrefstyle='select: title'/> 10879e7bcd65Smrg </para> 10889e7bcd65Smrg </listitem> 10899e7bcd65Smrg <listitem> 10909e7bcd65Smrg <para> 10919e7bcd65Smrg<xref linkend='XtCallAcceptFocus' xrefstyle='select: title'/>, 10929e7bcd65Smrg<xref linkend='XtSetKeyboardFocus' xrefstyle='select: title'/> 10939e7bcd65Smrg(subtree) 10949e7bcd65Smrg </para> 10959e7bcd65Smrg </listitem> 10969e7bcd65Smrg <listitem> 10979e7bcd65Smrg <para> 10989e7bcd65Smrg<xref linkend='XtResizeWindow' xrefstyle='select: title'/> 10999e7bcd65Smrg </para> 11009e7bcd65Smrg </listitem> 11019e7bcd65Smrg <listitem> 11029e7bcd65Smrg <para> 11039e7bcd65Smrg<xref linkend='XtSetWMColormapWindows' xrefstyle='select: title'/> 11049e7bcd65Smrg </para> 11059e7bcd65Smrg </listitem> 11069e7bcd65Smrg</itemizedlist> 11079e7bcd65Smrg<para> 11089e7bcd65SmrgThe Widget arguments to the following procedures must be of class 11099e7bcd65SmrgComposite 11109e7bcd65Smrgor any subclass: 11119e7bcd65Smrg</para> 11129e7bcd65Smrg<itemizedlist spacing='compact'> 11139e7bcd65Smrg <listitem> 11149e7bcd65Smrg <para> 11159e7bcd65Smrg<xref linkend='XtCreateManagedWidget' xrefstyle='select: title'/>, 11169e7bcd65Smrg<xref linkend='XtVaCreateManagedWidget' xrefstyle='select: title'/> 11179e7bcd65Smrg </para> 11189e7bcd65Smrg </listitem> 11199e7bcd65Smrg</itemizedlist> 11209e7bcd65Smrg<para> 11219e7bcd65SmrgThe Widget arguments to the following procedures must be of a subclass of 11229e7bcd65SmrgShell: 11239e7bcd65Smrg</para> 11249e7bcd65Smrg<itemizedlist spacing='compact'> 11259e7bcd65Smrg <listitem> 11269e7bcd65Smrg <para> 11279e7bcd65Smrg<xref linkend='XtPopdown' xrefstyle='select: title'/>, 11289e7bcd65Smrg<xref linkend='XtCallbackPopdown' xrefstyle='select: title'/>, 11299e7bcd65Smrg<xref linkend='XtPopup' xrefstyle='select: title'/>, 11309e7bcd65Smrg<xref linkend='XtCallbackNone' xrefstyle='select: title'/>, 11319e7bcd65Smrg<xref linkend='XtCallbackNonexclusive' xrefstyle='select: title'/>, 11329e7bcd65Smrg<xref linkend='XtCallbackExclusive' xrefstyle='select: title'/>, 11339e7bcd65Smrg<xref linkend='XtPopupSpringLoaded' xrefstyle='select: title'/> 11349e7bcd65Smrg </para> 11359e7bcd65Smrg </listitem> 11369e7bcd65Smrg</itemizedlist> 11379e7bcd65Smrg<para> 11389e7bcd65SmrgThe return value of the following procedure will be of class 11399e7bcd65SmrgCore 11409e7bcd65Smrgor a subclass: 11419e7bcd65Smrg</para> 11429e7bcd65Smrg<itemizedlist spacing='compact'> 11439e7bcd65Smrg <listitem> 11449e7bcd65Smrg <para> 11459e7bcd65Smrg<xref linkend='XtWindowToWidget' xrefstyle='select: title'/> 11469e7bcd65Smrg </para> 11479e7bcd65Smrg </listitem> 11489e7bcd65Smrg</itemizedlist> 11499e7bcd65Smrg<para> 11509e7bcd65SmrgThe return value of the following procedures will be of a subclass of 11519e7bcd65SmrgShell: 11529e7bcd65Smrg</para> 11539e7bcd65Smrg<itemizedlist spacing='compact'> 11549e7bcd65Smrg <listitem> 11559e7bcd65Smrg <para> 11569e7bcd65Smrg<xref linkend='XtAppCreateShell' xrefstyle='select: title'/>, 11579e7bcd65Smrg<xref linkend='XtVaAppCreateShell' xrefstyle='select: title'/>, 11589e7bcd65Smrg<xref linkend='XtAppInitialize' xrefstyle='select: title'/>, 11599e7bcd65Smrg<xref linkend='XtVaAppInitialize' xrefstyle='select: title'/>, 11609e7bcd65Smrg<xref linkend='XtCreatePopupShell' xrefstyle='select: title'/>, 11619e7bcd65Smrg<xref linkend='XtVaCreatePopupShell' xrefstyle='select: title'/> 11629e7bcd65Smrg </para> 11639e7bcd65Smrg </listitem> 11649e7bcd65Smrg</itemizedlist> 11659e7bcd65Smrg</sect1> 11669e7bcd65Smrg</chapter> 1167