|
|
1.1 root 1: .NH
2: Introduction
3: .XS ii
4: Table of Contents
5: .XE
6: .XS
7: Introduction
8: .XE
9: .PP
10: The X window system supports overlapping (sub)windows.
11: All the windows in an X server are arranged in a strict hierarchy. At
12: the top of the hierarchy is the `root' window,
13: which covers the entire display screen.
14: The root window is partially or completely covered by child windows.
15: All windows have parents except for the root window.
16: There is usually at least one window per application program.
17: .IN "Definitions" "Child Window"
18: .IN "Definitions" "Parent Window"
19: Child windows may in turn have
20: their own children.
21: In this way, an application program can create a tree of arbitrary depth.
22: .PP
23: A child window may be larger than its parent--that is, part or all of
24: the child window may extend beyond the boundaries of the parent.
25: However, all output to a window is clipped by the boundaries of its
26: parent window.
27: .PP
28: .IN "Definitions" "Stacking order"
29: If several children of a window have overlapping locations, then one of
30: the children is considered to be `on top of' or `raised over' the
31: others, obscuring them.
32: Output to areas covered by other windows will be suppressed by the window
33: system.
34: If a window is obscured
35: by a second window,
36: then the window will obscure only those ancestors of the second window which
37: are also ancestors of the window.
38: Normally, child windows obscure their parents
39: as well (but there are exceptions--see the discussions of
40: .IN "XOpenTransparency"
41: .IN "XClipMode"
42: \fIXOpenTransparency\fP and \fIXClipMode\fP for details).
43: .PP
44: .IN "Definitions" "Events"
45: .IN "Events"
46: Input from X takes the form of `events'.
47: Events may either be side effects of a command (restacking windows,
48: for example, generates exposure events),
49: or completely asynchronous (for example, the keyboard).
50: A client program asks to be informed of such events;
51: X never sends events a program did not ask for.
52: .PP
53: X does not take responsibility for the contents of windows; when (part or
54: all of) a window is hidden and then brought back onto the screen, its
55: contents may be lost lost and the client program is notified (by an exposure
56: event) that (part or all
57: of) the window needs to be repainted.
58: Programs should be prepared to regenerate their windows on demand.
59: .PP
60: .IN "Definitions" "Resource ID"
61: Most of the subroutines in Xlib just add requests to an output buffer;
62: these requests later execute asynchronously on the X server
63: (often referred to as ``display server'' below).
64: Subroutines that return values do not return (``block'')
65: until an explicit reply is
66: received or an error occurs.
67: This may be queried information or a ``resource id'' discussed below.
68: If such a call results in an error, the error will
69: generally not be reported (by a call to an optional error handler)
70: until some later, blocking call is made.
71: .PP
72: .IN "XSync"
73: If a
74: client does not want a request to execute asynchronously, he can follow
75: it with a call to \fIXSync\fP, which will block until all previously buffered
76: asynchronous events have been sent and acted on.
77: .PP
78: As an important side effect,
79: .IN "XPending"
80: .IN "XNextEvent"
81: .IN "XWindowEvent"
82: .IN "XFlush"
83: .IN "XSync"
84: the output buffer is always flushed by a call to any subroutine
85: which returns a value or by calls to \fIXPending\fP,
86: \fIXNextEvent\fP, \fIXWindowEvent\fP,
87: \fIXFlush\fP or \fIXSync\fP.
88: .PP
89: .IN "Resource ID" "Window"
90: .IN "Resource ID" "Font"
91: .IN "Resource ID" "Pixmap"
92: .IN "Resource ID" "Bitmap"
93: .IN "Resource ID" "Cursor"
94: Many subroutines will return an integer resource id.
95: These can be of type ``Window'', ``Font'', ``Pixmap'', ``Bitmap'',
96: and ``Cursor'',
97: .IN "File" "<X/X.h>"
98: as defined in \fI<X/X.h>\fP.
99: Some subroutines return ``Status'', an integer error indication.
100: If the subroutine fails, it will return 0.
101: .PP
102: .IN "Definitions" "Status"
103: Since C does not provide multiple return values, many subroutines return
104: their results by writing into client-passed storage. Any pointer that is
105: used to return a value is designated as ``/* RETURN */'' in the procedure
106: declarations below.
107: All other pointers passed to these subroutines are
108: used for reading only.
109: If such a procedure returns a status of 0,
110: then it has NOT updated the return parameters.
111: .IN "Error Handling"
112: By default, errors are handled by a standard library subroutine,
113: or you can provide your own.
114: Subroutines that return pointers to strings will return NULL pointers if
115: the string does not exist.
116: .PP
117: .PP
118: Input events (e.g. key pressed, mouse moved) arrive asynchronously from
119: the server and are queued until they are requested by a call to
120: \fIXNextEvent\fP or \fIXWindowEvent\fP. In addition, some of the library
121: .IN "XChangeWindow"
122: .IN "XRaiseWindow"
123: subroutines (e.g. \fIXChangeWindow\fP and \fIXRaiseWindow\fP)
124: generate ``exposure''
125: events--requests to repaint sections of a window that do not have valid
126: contents. These events also arrive asynchronously, but the client may
127: .IN "XSync"
128: wish to explicitly wait for them by calling \fIXSync\fP after calling a
129: subroutine which may generate exposure events.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.