On Wed, Nov 01, 2006 at 11:36:08PM +0100, Asger Ottar Alstrup wrote: > Hi, > > To implement partial update (single paragraph update), it is not enough > just to redraw only those parts of the screen. > > You also have to implement partial update of the coord cache. Right now, > the only possible operation for the coord cache is to clear all of it. > > To implement partial update, it is necessary to change it such that you > selectively remove only those parts of the coord cache which reside in > the paragraph you want to redraw. > > The reason is that if you have a paragraph with an inset in it, the > coordinates of the inset is recorded in the coord cache. If you type > something in this paragraph (without changing the height of the > paragraph), the inset might move, and thus you need to update the > coordinates of insets in the same paragraph in the coord cache. > > (I assume that you understand that the coord cache contains several > caches: One for paragraphs, one for insets, and a third one I forget. > You have to make sure that all caches are correctly updated of course - > it's not just the insets cache. Remember that the coord cache is > calculated in two steps: First, sizes are calculated. Then, *when > drawing* the positions are recorded.) > > Regards, > Asger
Hmmm, I don't think this is done in 1.4, and still single par update works just fine there... in 1.5 the infrastructure is there but it isn't working properly, as whole-screen updates have been layered on top of it with reckless disregard for what was already there, which thus is now completely useless. I am a bit angry about this. It would have been so easy to see what exactly is getting rendered using the PAINTING debug flag. What about first getting the old singlepar/singlerow functionality back into a working state? Then we can see what is missing and provide it. - Martin
pgpFNih8CRs57.pgp
Description: PGP signature