6:56:46lokeI meant record that were visible, and still are, after scrolling.

6:57:00lokeCan't you just use the xredner extension to move the graphics instead of repaitning?

6:57:09jackdanielI think I saw some code which does blitting like that, but I'm not 100% sure

6:57:36lokejackdaniel: Assuming such blitting is possibel (I'll play around with uit), do you happen to know whgere in the code base this stuff happens?

6:57:46jackdanielknobo: I plan a second part of the gadget video after finishing abovementioned changes (so presentations work with gadgets, there are some things which also need to be taken into cosnideration – like presenting things in handle-repaint doesn't create output-records by default)

6:57:47lokeI.e. where is the scrolling, and what part of the code needs changing to support this?

8:34:36lokejackdaniel: OK, I've been looking at the CLIm code now. Turns out that scrolling is done in the SCROLL-EXTENT function (in panes.lisp). It basically just calls MOVE-SHEET. The MOVE-SHEET method (in sheets.lisp) sets the sheet transformation using (SETF (SHEET-TRANSFORMATION ...) ...).

8:38:23lokeThere is an :AROUND method on this SETF function, which calls DISPATCH-REPAINT when the sheet is viewable.

8:39:16lokeThe DISPATCH-REPAINT is passed a single region, which is a union of the SHEET-REGION and the OLD-REGION (why they do that, I have no idea. Shouldn't it be enough to just include the new region?)

8:40:16lokeAnyway, the magic should happen around there somewhere there I guess? (we're talking about the (SETF SHEET-TRANSFORMATION) in sheets.lisp line 228.

12:46:34lokejackdaniel: That's unfortunately not enough, since you need to know the exact scrolling location before and after the event, and the redraw only gives you the latter. Also note that the _same_ redraw event is sent whenever any kind of redraw is needed, not just scrolling.