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.