Hello,
I've reimplemented `drag-output-record' and `dragging-output' to be more closer to specification. Unfortunately, the behaviour of these functions is underspecified and quite unclear in many places. I've attempted to implement all keys and window repaint event (the latter was marked as unresolved issue). I've used CLIM 2.0 (Symbolics/Xerox/Apple etc.), LW's CLIM 2.0 and Franz' CLIM 2.2.2 specifications as references. Also I played with CLIM implementation from Allegro CL with lesstif backend instead Motif. The drag-output-record is something buggy there, but acceptable to analyze some features.
This patch does the following::
* Implements :repaint (as I understand it's meaning).
* Supports :multiple-window. However, my understanding the meaning of this key and, hence, implementation could be incorrect.
* :erase key works as described in specification: by default erase-output-record is used.
* Supports window-repaint-event. In effect, if user's :feedback is provided and window-repaint-event has been queued (for instance, when user scrolled down/up stream while dragging), the feedback first is erased, then handle-repaint is called and, finally, the feedback is drawn again at the same place.
* Reimplements dragging-output macro without introducing unspecified key :erase-final.
* Slightly corrected draggable-graph example from clim-examples. I hope that I will write more featured example... later.
Note, there is bug somewhere in stream-pointer-position. Something wrong with sheet-native-transformation for the stream. The effect of this bug is that the record capture works as expected only on first page inside scroller. On other pages the record is selected with wrong initial position.