Professional Documents
Culture Documents
Version 5.0
Document Revision 1
2010-11-15
Keith Packard
keithp@keithp.com
1. Introduction
X applications have often needed to work around various shortcomings in the
core X window system. This extension is designed to provide the minimal
server-side support necessary to eliminate problems caused by these
workarounds.
2. Acknowledgements
This extension is a direct result of requests made by application
developers, in particular,
+
Owen Taylor for describing the issues raised with the XEMBED
mechanisms and SaveSet processing and his initial extension
to handle this issue, and for pointer barriers
Havoc Pennington
3. Basic Premise
Requests in this extension may seem to wander all over the map of X server
capabilities, but they are tied by a simple rule -- resolving issues raised
by application interaction with core protocol mechanisms that cannot be
adequately worked around on the client side of the wire.
4. Extension initialization
The client must negotiate the version of the extension before executing
extension requests. Behavior of the server is undefined otherwise.
QueryVersion
client-major-version:
client-minor-version:
CARD32
CARD32
->
major-version:
minor-version:
CARD32
CARD32
The client sends the highest supported version to the server and
the server sends the highest version it supports, but no higher than
the requested version. Major versions changes can introduce
new requests, minor version changes introduce only adjustments to
existing requests or backward compatible changes. It is
the clients responsibility to ensure that the server supports
a version which is compatible with its expectations.
Window
{ Insert, Delete }
{ Nearest, Root }
{ Map, Unmap }
{ SetSelectionOwner,
SelectionWindowDestroy,
SelectionClientClose }
6.1 Events
SelectionNotify
subtype:
window:
owner:
selection:
timestamp:
selection-timestamp:
SELECTIONEVENT
Window
Window
Atom
Timestamp
Timestamp
6.2 Requests
SelectSelectionInput
window:
selection:
event-mask:
Window
Atom
SETofSELECTIONEVENT
{ DisplayCursor }
7.2 Events
CursorNotify
subtype:
window:
cursor-serial:
timestamp:
name:
CURSOREVENT
Window
CARD32
Timestamp
Atom
(Version 2 only)
7.3 Requests
SelectCursorInput
window:
event-mask:
Window
SETofCURSOREVENT
INT16
INT16
CARD16
CARD16
CARD16
CARD16
CARD32
LISTofCARD32
XID
{ Bounding, Clip }
8.2 Errors
Region
8.3 Requests
CreateRegion
region:
rects:
REGION
LISTofRECTANGLE
REGION
PIXMAP
Window
WINDOW_REGION_KIND
Region
GContext
Region
Picture
Region
region:
Region
Region
LISTofRECTANGLE
This replaces the current contents of region with the region formed
by the union of rects.
CopyRegion
source:
destination:
Region
Region
Region
Region
Region
Region
RECTANGLE
Region
Region
INT16
Region
Region
FetchRegion
region:
->
extents:
rectangles:
Region
RECTANGLE
LISTofRECTANGLE
GCONTEXT
INT16
Region or None
Window
SHAPE_KIND
INT16
Region or None
This request sets the specified (by destKind) Shape extension region
of the window to region, offset by xOff and yOff. Future changes to
region have no effect on the window shape.
Errors: Window, Value, Region
SetPictureClipRegion
picture:
clip-x-origin, clip-y-origin:
region:
Picture
INT16
Region or None
non-visual means.
9.1 Events
CursorNotify
subtype:
window:
cursor-serial:
timestamp:
name:
CURSOREVENT
Window
CARD32
Timestamp
Atom or None
CURSOR
LISTofCARD8
This request interns name as an atom and sets that atom as the name
of cursor.
Errors: Cursor
GetCursorName
cursor:
->
atom:
name:
CURSOR
ATOM or None
LISTofCARD8
INT16
INT16
CARD16
CARD16
CARD16
CARD16
CARD32
ATOM
LISTofCARD8
LISTofCARD32
CURSOR
CURSOR
LISTofCARD8
This request replaces the contents of all cursors with the specified
name with the src cursor.
************* XFIXES VERSION 3 OR BETTER ***********
10. Region Expansion
This update provides another operation on the region objects defined in
Section 8 of this document.
10.1 Requests
ExpandRegion
source:
destination:
left, right, top, bottom:
REGION
REGION
CARD16
WINDOW
WINDOW
XID
BarrierDirections
BarrierPositiveX:
BarrierPositiveY:
BarrierNegativeX:
BarrierNegativeY:
12.2 Errors
1
1
1
1
<<
<<
<<
<<
0
1
2
3
Barrier
12.3 Requests
CreatePointerBarrier
barrier:
drawable:
x1, y2, x2, y2:
directions:
devices:
BARRIER
DRAWABLE
INT16
CARD32
LISTofDEVICEID
BARRIER
supported.