John Levon wrote: > I mean, we only post a paint when top_y changes.
Ah, good idea. > I don't understand much of it myself, but here goes: > > When we notice something needs redrawing, we call post(Row)Paint, which > will set refresh_row or refresh_y as appropriate. Inside an inset, this > will also set the paint on the containing row of this inset in case it > changes the size of the outer row etc. And what about non-text insets? does draw gets called inmediately for these or there is a similar delayed mechanism? > Then, whenever BufferView::update() is called, we call the screen() > paint routines. This actually uses the RowPainter, starting from the > saved row, which paints onto the backing pixmap. Finally, we send an > expose() to the frontend which actually copies the new image parts onto > the visible screen pixmap. How does it work for inner (nested) insettexts? Does the screen() paint routines draw directly inner insettexts? > Please let me know if you want more details or have more questions, > trying to explain stuff will probably help me understand it better... Thanks for the nice explanation. It's getting definitely clearer! > We seriously need to look at splitting this damned class into toplevel > and per-inset methods. BIG TIME. Big indeed. Alfredo