Page 201 Table of Contents Index Page 203
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E



CHAPTER 22. EXTENDED STREAM INPUT

Enters an interaction mode in which the user moves the pointer and output-record "follows" the
pointer by being dragged on the output recording stream stream. By default, the dragging is
accomplished by erasing the output record from its previous position and redrawing at the new
position. output-record remains in the output history of stream at its final position.

The returned values are the final x and y position of the pointer.

The boolean repaint allows the programmer to control the appearance of windows as the pointer
is dragged. If repaint is true (the default), displayed contents of windows are not disturbed as
the output record is dragged over them (that is, those regions of the screen are repainted). If it
is false, then no repainting is done as the output record is dragged.

erase allows the programmer to identify a function that will be called to erase the output record
as it is dragged. It must be a function of two arguments, the output record to erase and the
stream; it has dynamic extent. The default is erase-output-record.

feedback allows the programmer to identify a "feedback" function. feedback must be a is a function
of seven arguments: the output record, the stream, the initial x and y position of the pointer,
the current x and y position of the pointer, and a drawing argument (either :erase or :draw).
It has dynamic extent. The default is nil, meaning that the feedback behavior will be for the
output record to track the pointer. (The feedback argument is used when the programmer desires
more complex feedback behavior, such as drawing a "rubber band" line as the user moves the
mouse.) Note that if feedback is supplied, erase is ignored.

If the boolean finish-on-release is false (the default), drag-output-record is exited when the
user presses a pointer button. When it is true, drag-output-record is exited when the user
releases the pointer button currently being held down.

=> dragging-output (&optional stream &key repaint finish-on-release) &body body [Macro]
Evaluates body inside of with-output-to-output-record to produce an output record for the
stream stream, and then invokes drag-output-record on the record in order to drag the output.
The output record is not inserted into stream's output history.

The returned values are the final x and y position of the pointer.

The stream argument is not evaluated, and must be a symbol that is bound to an output recording
stream
stream. If stream is t (the default), *standard-output* is used. body may have zero or
more declarations as its first forms.

repaint and finish-on-release are as for drag-output-record.

22.6 Gesture Preprocessing

Every gesture that goes through stream-read-gesture gets processed before it is returned.
This allows applications to intercept gestures and alter the flow of control. Gesture processing
is done via a gesture table that associates each gesture with a function of two arguments, stream


Page 201 Table of Contents Index Page 203
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E