[mcclim-devel] [PATCH] Reimplementaion of drag-output-record, dragging-output

Evgeny M. Zubok evgeny.zubok at tochka.ru
Fri Jan 8 16:14:55 UTC 2010


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.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: drag-output-record.patch
Type: text/x-diff
Size: 19355 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/mcclim-devel/attachments/20100108/bf912be1/attachment.patch>


More information about the mcclim-devel mailing list