CONTENTS Chapter 1. Intrinsics and Widgets 1.1 Intrinsics 1.2 Languages 1.3 Procedures and Macros 1.4 Widgets 1.4.1 Core Widgets 1.4.1.1 CoreClas s Part S tructure 1.4.1.2 CorePart S tructure 1.4.1.3 Core Res ources 1.4.1.4 CorePart Default Values 1.4.2 Composite Widgets 1.4.2.1 Compos iteClas s Part S tructure 1.4.2.2 Compos itePart S tructure 1.4.2.3 Compos ite Res ources 1.4.2.4 Compos itePart Default Values 1.4.3 Constraint Widgets 1.4.3.1 Cons traintClas s Part S tructure 1.4.3.2 Cons traintPart S tructure 1.4.3.3 Cons traint Res ources 1.5 Implementation-Specific Types 1.6 Widget Classing 1.6.1 Widget Naming Conventions 1.6.2 Widget Subclassing in Public .h Files 1.6.3 Widget Subclassing in Private .h Files 1.6.4 Widget Subclassing in .c Files 1.6.5 Widget Class and Superclass Lookup 1.6.6 Widget Subclass Verification 1.6.7 Superclass Chaining 1.6.8 Class Initialization: class_initialize and class_part_initialize 1.6.9 Initializing a Widget Class 1.6.10 Inheritance of Superclass Operations 1.6.11 Invocation of Superclass Operations 1.6.12 Class Extension Records Chapter 2. Widget Instantiation 2.1 Initializing the X Toolkit 2.2 Loading the Resource Database 2.3 Parsing the Command Line 2.4 Creating Widgets 2.4.1 Creating and Merging Argument Lists 2.4.2 Creating a Widget Instance 2.4.3 Creating an Application Shell Instance 2.4.4 Convenience Procedure to Initialize an Application 2.4.5 Widget Instance Initialization: the initialize Procedure 2.4.6 Constraint Instance Initialization: the ConstraintClassPart initialize 2.4.7 Nonwidget Data Initialization: the initialize_hook Procedure 2.5 Realizing Widgets 2.5.1 Widget Instance Window Creation: the realize Procedure 2.5.2 Window Creation Convenience Routine 2.6 Obtaining Window Information from a Widget 2.6.1 Unrealizing Widgets 2.7 Destroying Widgets 2.7.1 Adding and Removing Destroy Callbacks 2.7.2 Dynamic Data Deallocation: the destroy Procedure 2.7.3 Dynamic Constraint Data Deallocation: the ConstraintClassPart destroy 2.8 Exiting from an Application Chapter 3. Composite Widgets and Their Children 3.1 Addition of Children to a Composite Widget: the insert_child Procedure 3.2 Insertion Order of Children: the insert_position Procedure 3.3 Deletion of Children: the delete_child Procedure 3.4 Adding and Removing Children from the Managed Set 3.4.1 Managing Children 3.4.2 Unmanaging Children 3.4.3 Determining If a Widget Is Managed 3.5 Controlling When Widgets Get Mapped 3.6 Constrained Composite Widgets Chapter 4. Shell Widgets 4.1 Shell Widget Definitions 4.1.1 ShellClassPart Definitions 4.1.2 ShellPart Definition 4.1.3 Shell Resources 4.1.4 ShellPart Default Values Chapter 5. Pop-Up Widgets 5.1 Pop-Up Widget Types 5.2 Creating a Pop-Up Shell 5.3 Creating Pop-Up Children 5.4 Mapping a Pop-Up Widget 5.5 Unmapping a Pop-Up Widget Chapter 6. Geometry Management 6.1 Initiating Geometry Changes 6.2 General Geometry Manager Requests 6.3 Resize Requests 6.4 Potential Geometry Changes 6.5 Child Geometry Management: the geometry_manager Procedure 6.6 Widget Placement and Sizing 6.7 Preferred Geometry 6.8 Size Change Management: the resize Procedure Chapter 7. Event Management 7.1 Adding and Deleting Additional Event Sources 7.1.1 Adding and Removing Input Sources 7.1.2 Adding and Removing Timeouts 7.2 Constraining Events to a Cascade of Widgets 7.2.1 Requesting Key and Button Grabs 7.3 Focusing Events on a Child 7.4 Querying Event Sources 7.5 Dispatching Events 7.6 The Application Input Loop 7.7 Setting and Checking the Sensitivity State of a Widget 7.8 Adding Background Work Procedures 7.9 X Event Filters 7.9.1 Pointer Motion Compression 7.9.2 Enter/Leave Compression 7.9.3 Exposure Compression 7.10 Widget Exposure and Visibility 7.10.1 Redisplay of a Widget: the expose Procedure 7.10.2 Widget Visibility 7.11 X Event Handlers 7.11.1 Event Handlers That Select Events 7.11.2 Event Handlers That Do Not Select Events 7.11.3 Current Event Mask Chapter 8. Callbacks 8.1 Using Callback Procedures and Callback List Definitions 8.2 Identifying Callback Lists 8.3 Adding Callback Procedures 8.4 Removing Callback Procedures 8.5 Executing Callback Procedures 8.6 Checking the Status of a Callback List Chapter 9. Resource Management 9.1 Resource Lists 9.2 Byte Offset Calculations 9.3 Superclass-to-Subclass Chaining of Resource Lists 9.4 Subresources 9.5 Obtaining Application Resources 9.6 Resource Conversions 9.6.1 Predefined Resource Converters 9.6.2 New Resource Converters 9.6.3 Issuing Conversion Warnings 9.6.4 Registering a New Resource Converter 9.6.5 Resource Converter Invocation 9.7 Reading and Writing Widget State 9.7.1 Obtaining Widget State 9.7.1.1 Widget S ubpart Res ource Data: the get_ values _ hook Procedure 9.7.1.2 Widget S ubpart S tate 9.7.2 Setting Widget State 9.7.2.1 Widget S tate: the s et_ values Procedure 9.7.2.2 Widget S tate: the s et_ values _ almos t Procedure 9.7.2.3 Widget S tate: the Cons traintClas s Part s et_ values Procedure 9.7.2.4 Widget S ubpart S tate 9.7.2.5 Widget S ubpart Res ource Data: the s et_ values _ hook Procedure Chapter 10. Translation Management 10.1 Action Tables 10.1.1 Action Table Registration 10.1.2 Action Names to Procedure Translations 10.1.3 Action Hook Registration 10.2 Translation Tables 10.2.1 Event Sequences 10.2.2 Action Sequences 10.2.3 Multi-Click Time 10.3 Translation Table Management 10.4 Using Accelerators 10.5 KeyCode-to-KeySym Conversions 10.6 Obtaining a KeySym in an Action Procedure 10.7 KeySym-to-KeyCode Conversions 10.8 Registering Button and Key Grabs for Actions 10.9 Invoking Actions Directly Chapter 11. Utility Functions 11.1 Determining the Number of Elements in an Array 11.2 Translating Strings to Widget Instances 11.3 Managing Memory Usage 11.4 Sharing Graphics Contexts 11.5 Managing Selections 11.5.1 Setting and Getting the Selection Timeout Value 11.5.2 Using Atomic Transfers 11.5.2.1 Atomic T rans fer Procedures 11.5.2.2 Getting the S election Value 11.5.2.3 S etting the S election Owner 11.5.3 Using Incremental Transfers 11.5.3.1 I ncremental T rans fer Procedures 11.5.3.2 Getting the S election Value I ncrementally 11.5.3.3 S etting the S election Owner for I ncremental T rans fers 11.5.4 Retrieving the Most Recent Timestamp 11.6 Merging Exposure Events into a Region 11.7 Translating Widget Coordinates 11.8 Translating a Window to a Widget 11.9 Handling Errors 11.10 Setting WM_COLORMAP_WINDOWS 11.11 Finding File Names Chapter 12. Nonwidget Objects 12.1 Data Structures 12.2 Object Objects 12.2.1 ObjectClassPart Structure 12.2.2 ObjectPart Structure 12.2.3 Object Resources 12.2.4 ObjectPart Default Values 12.2.5 Object Arguments to Intrinsics Routines 12.2.6 Use of Objects 12.3 Rectangle Objects 12.3.1 RectObjClassPart Structure 12.3.2 RectObjPart Structure 12.3.3 RectObj Resources 12.3.4 RectObjPart Default Values 12.3.5 RectObj Arguments to Intrinsics Routines 12.3.6 Use of Rectangle Objects 12.4 Undeclared Class 12.5 Widget Arguments to Intrinsics Routines Chapter 13. Evolution of Intrinsics 13.1 Determining Specification Revision Level 13.2 Release 3 to Release 4 Compatibility 13.2.1 Additional Arguments 13.2.2 set_values_almost Procedures 13.2.3 Query Geometry 13.2.4 unrealizeCallback Callback List 13.2.5 Subclasses of WMShell 13.2.6 Resource Type Converters 13.2.7 KeySym Case Conversion Procedure 13.2.8 Nonwidget Objects Appendix A. Resource File Format Appendix B. Translation Table Syntax B.1 Notation B.2 Syntax B.3 Modifier Names B.4 Event Types B.5 Canonical Representation B.6 Examples Appendix C. Compatibility Functions Appendix D. Intrinsics Error Messages D.1 Error Messages D.2 Warning Messages Appendix E. StringDefs.h Header File