freenode/#clim - IRC Chatlog
Search
5:29:00
jackdaniel
on my side I have a guest (who is also an intern in TurtleWare) and I don't have much time for hacking for the last few days (and if I have, I jump into my code not into IRC)
6:09:49
loke
jackdaniel: I do have a question: When you have a lage window with lots of output records, wouldn't it make sense to repaint only a protion of the window content when scrolling?
6:10:06
loke
I believe there is a way to use render to copy the content instead of repainting it all?
6:41:42
knobo
So, I'm going to create a gadget like this: https://gist.github.com/knobo/5a4a54771222d05452c3de4afc7ca0a8
6:42:17
knobo
But I'm wondering how could I make each day in my calendar clickable without having to issue the select-date command first?
6:49:42
loke
Then if you have something that accepts date input, you can just click on any calendar cell
6:54:24
jackdaniel
knobo: if you don't use a gadget interface, but inherit from the application pane, then you can use display-function and presentations
6:55:41
jackdaniel
loke: it does make sense, if output record is not visible it should not be repainted
6:57:36
loke
jackdaniel: 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:46
jackdaniel
knobo: 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)
7:01:16
loke
I'd just need to create a picture object representing the window and then use XRenderComposite.
7:14:40
knobo
When I click on a date. when I have a define-presentation-to-command-translator. Like the last form here: https://gist.github.com/knobo/5a4a54771222d05452c3de4afc7ca0a8
8:34:36
loke
jackdaniel: 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:23
loke
There is an :AROUND method on this SETF function, which calls DISPATCH-REPAINT when the sheet is viewable.
8:39:16
loke
The 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:16
loke
Anyway, the magic should happen around there somewhere there I guess? (we're talking about the (SETF SHEET-TRANSFORMATION) in sheets.lisp line 228.