A. Revision History
This appendix describes the revision history of this document and
summarizes the incompatibilities between this and earlier versions.
A.1. The X11R2 Draft
The February 25, 1988 draft that was distributed as part of X Version 11,
Release 2 was clearly labeled as such,
and many areas were explicitly labeled as liable to change.
Nevertheless, in the revision work since then,
we have been very careful not to introduce gratuitous incompatibility.
As far as possible,
we have tried to ensure that clients obeying the conventions
in the X11R2 draft would still work.
A.2. The July 27, 1988 Draft
The Consortium review was based on a draft dated July 27, 1988. This draft
included several areas in which incompatibilities with the X11R2 draft were
necessary:
- The use of property
None
in
ConvertSelection
requests is no longer allowed.
Owners that receive them are free to use the target atom as the property
to respond with,
which will work in most cases.
- The protocol for INCREMENTAL type properties as selection replies has changed,
and the name has been changed to INCR.
Selection requestors are free to implement the earlier protocol
if they receive properties of type INCREMENTAL.
- The protocol for INDIRECT type properties as selection replies has changed,
and the name has been changed to MULTIPLE.
Selection requestors are free to implement the earlier protocol
if they receive properties of type INDIRECT.
- The protocol for the special CLIPBOARD client has changed.
The earlier protocol is subject to race conditions and should not be used.
- The set of state values in WM_HINTS.initial_state has been reduced,
but the values that are still valid are unchanged.
Window managers should treat the other values sensibly.
- The methods an application uses to change the state of its top-level window
have changed but in such a way that cases that used to work will still work.
- The x, y, width, and height fields have been removed from the WM_NORMAL_HINTS
property and replaced by pad fields.
Values set into these fields will be ignored.
The position and size of the window should be set by setting the appropriate
window attributes.
- A pair of base fields and a win_gravity field have been added
to the WM_NORMAL_HINTS property.
Window managers will assume values for these fields if the client
sets a short property.
A.3. The Public Review Drafts
The Consortium review resulted in several incompatible changes. These
changes were included in drafts that were distributed for public review
during the first half of 1989.
- The messages field of the WM_HINTS property was found to be unwieldy
and difficult to evolve.
It has been replaced by the WM_PROTOCOLS property,
but clients that use the earlier mechanism can be detected
because they set the messages bit in the flags field of the WM_HINTS property,
and window managers can provide a backwards-compatibility mode.
- The mechanism described in the earlier draft by which clients installed
their own subwindow colormaps could not be made to work reliably
and mandated some features of the look and feel.
It has been replaced by the WM_COLORMAP_WINDOWS property.
Clients that use the earlier mechanism can be detected by the WM_COLORMAPS
property they set on their top-level window,
but providing a reliable backwards compatibility mode is not possible.
- The recommendations for window manager treatment of top-level window borders
have been changed as those in the earlier draft produced problems
with Visibility events.
For nonwindow manager clients,
there is no incompatibility.
- The pseudoroot facility in the earlier draft has been removed.
Although it has been successfully implemented,
it turns out to be inadequate to support the uses envisaged.
An extension will be required to support these uses fully,
and it was felt that the maximum freedom should be left to the designers
of the extension.
In general,
the previous mechanism was invisible to clients and no incompatibility
should result.
- The addition of the WM_DELETE_WINDOW protocol (which prevents the danger
that multi-window clients may be terminated unexpectedly)
has meant some changes in the WM_SAVE_YOURSELF protocol,
to ensure that the two protocols are orthogonal.
Clients using the earlier protocol can be detected (see WM_PROTOCOLS above)
and supported in a backwards-compatibility mode.
- The conventions in Section 14.3.1. of Xlib - C Language X Interface
regarding properties of type RGB_COLOR_MAP have been changed,
but clients that use the earlier conventions can be detected
because their properties are four bytes shorter.
These clients will work correctly if the server supports only a single Visual
or if they use only the Visual of the root.
These are the only cases in which they would have worked, anyway.
A.4. Version 1.0, July 1989
The public review resulted in a set of mostly editorial changes. The
changes in version 1.0 that introduced some degree of incompatibility with
the earlier drafts are:
- A new section (6.3) was added covering the window manager's
use of Grabs.
The restrictions it imposes should affect only window managers.
- The TARGETS selection target has been clarified,
and it may be necessary for clients to add some entries to their replies.
- A selection owner using INCR transfer should no longer replace targets in
a MULTIPLE property with the atom INCR.
- The contents of the
ClientMessage
event sent by a client to iconify itself has been clarified,
but there should be no incompatibility because the earlier contents
would not in fact have worked.
- The border-width in synthetic
ConfigureNotify
events is now specified,
but this should not cause any incompatibility.
- Clients are now asked to set a border-width on all
ConfigureWindow
requests.
- Window manager properties on icon windows now will be ignored,
but there should be no incompatibility
because there was no specification that they be obeyed previously.
- The ordering of real and synthetic
ConfigureNotify
events is now specified,
but any incompatibility should affect only window managers.
- The semantics of WM_SAVE_YOURSELF have been clarified and restricted to
be a checkpoint operation only.
Clients that were using it as part of a shutdown sequence may need to
be modified,
especially if they were interacting with the user during the shutdown.
- A kill_id field has been added to RGB_COLOR_MAP properties.
Clients using earlier conventions can be detected by the size of their
RGB_COLOR_MAP properties,
and the cases that would have worked will still work.
A.5. Version 1.1
Version 1.1 was released with X11R5 in September, 1991. In addition to some
minor editorial changes, there were a few semantic changes since Version
1.0:
- The section on Device Color Characterization was added.
- The meaning of the NULL property type was clarified.
- Appropriate references to Compound Text were added.
A.6. Public Review Draft, December 1993
The following changes have been made in preparing the public review draft
for Version 2.0.
- [P01] Addition of advice to clients on how to keep track of a top-level
window's absolute position on the screen.
- [P03] A technique for clients to detect when it is safe to re-use a
top-level window has been added.
- [P06] Section 4.1.8, on colormaps, has been rewritten. A new feature that
allows clients to install their own colormaps has also been added.
- [P08] The LENGTH target has been deprecated.
- [P11] The manager selections facility was added.
- [P17] The definition of the aspect ratio fields of the WM_NORMAL_HINTS
property has been changed to include the base size.
- [P19]
StaticGravity
has been added to the list of values allowed for the win_gravity field of
the WM_HINTS property. The meaning of the
CenterGravity
value has been clarified.
- [P20] A means for clients to query the ICCCM compliance level of the window
manager has been added.
- [P22] The definition of the MULTIPLE selection target has been clarified.
- [P25] A definition of "top-level window" has been added. The WM_STATE
property has been defined and exposed to clients.
- [P26] The definition of window states has been clarified and the wording
regarding window state changes has been made more consistent.
- [P27] Clarified the rules governing when window managers are required to send
synthetic
ConfigureNotify
events.
- [P28] Added a recommended technique for setting the input focus to a window
as soon as it is mapped.
- [P29] The required lifetime of resource IDs named in window manager
properties has been specified.
- [P30] Advice for dealing with keystrokes and override-redirect windows has
been added.
- [P31] A statement on the ownership of resources transferred through the
selection mechanism has been added.
- [P32] The definition of the CLIENT_WINDOW target has been clarified.
- [P33] A rule about requiring the selection owner to re-acquire the
selection under certain circumstances has been added.
- [P42] Added several new selection targets.
- [P44] Ambiguous wording regarding the withdrawal of top-level windows
has been removed.
- [P45] A facility for requestors to pass parameters during a selection
request has been added.
- [P49] A convention on discrimated names has been added.
- [P57] The C_STRING property type was added.
- [P62] An ordering requirement on processing selection requests was added.
- [P63] The
VisibleHint
flag was added.
- [P64] The session management section has been updated to align with the new
session management protocol. The old session management conventions have
been moved to Appendix C.
- References to the never-forthcoming Window and Session Manager
Conventions Manual have been removed.
- Information on the X Registry and references to the session management and
ICE documents have been added.
- Numerous editorial and typographical improvements have been made.
A.7. Version 2.0, April 1994
The following changes have been made in preparation for releasing
the final edition of Version 2.0 with X11R6.
- The PIXMAP selection target has been revised to return a property of type
PIXMAP instead of type DRAWABLE.
- The session management section has been revised slightly to correspond with
the changes to the X Session Management Protocol.
- Window managers are now prohibited from placing
CurrentTime
in the timestamp field of WM_TAKE_FOCUS messages.
- In the WM_HINTS property, the
VisibleHint
flag has been renamed to
UrgencyHint .
Its semantics have also been defined more thoroughly.
- Additional editorial and typographical changes have been made.
Christophe Tronche, ch@tronche.com