Hello everyone,
As far as I can tell, there are two major problems with the current implementation of the layout protocol:
* First, compose-space and change-space-requirements have :before, :after, or :around methods that are essential for the implementation to work. The consequences of this way of doing it (it seems to me) is that client code that wishes to change the default behavior or override it in subclasses of standard CLIM layout panes cannot do so without being aware of the existence of these methods.
* Second, change-space-requirements always calls itself on the parent pane. However, the definition of the restraining-pane is that it should stop propagation of change-space-requirement. After discussions with Andy Hefner, we conclude that change-space-requirement should call note-space-requirement-changed, which in turn calls change-space-requirement on its parent, unless overridden.
These points make it hard to implement the restraining pane, which is probably why it is not implemented, even though it ought to be fairly easy.