Armel Asselin: > ... generally, a painting system is transaction oriented, i.e., open a > transaction, do all the job (computing the bound box of things to update and > accumulate draw related updates somewhere, or bailing out if too many, > noting that with a 'redraw everything' flag), close the transaction: if > something was to be updated, do it
The case where this does not work well is scrolling. When you scroll the window, all the lines on the screen need to change so the bounding box is the whole window. Redrawing the whole window is quite slow and the window already contains many correct pixels that are just in the wrong position. So the scrolling code performs a *synchronous* blit to move those pixels to where they should be and then fixes up the newly scrolled in pixels. This has to be synchronous as otherwise multiple scrolls occurring before a paint become very confusing as you don't know which pixels are still valid. Edit widgets that do not do this are generally too slow to use. For an example, the C# version of SinkWorld/Tentacle does not perform synchronous scrolling as Windows.Forms has no equivalent to ScrollWindow. Neil _______________________________________________ Scintilla-interest mailing list [email protected] http://mailman.lyra.org/mailman/listinfo/scintilla-interest
