Re: commit: Fix lots of stuff.


Subject: Re: commit: Fix lots of stuff.
From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Fri Feb 01 2002 - 04:23:56 CST


Hi Martin,

> I got the idea for doing this is a sane way after tracing through the
> code that caused list elements to flash. There was code in
> fv_View::_generalUpdate to update every field in the document by
> scanning every run in the document after every keypress. There were
> some good ideas in this code, especially the "isLayoutDependent()"
> method on field runs. I changed the name of this to
> "needsFrequentUpdates()" and put another bool in fl_BlockLayout
> "hasUpdatableField()". This is (un)set during a format if there is a
> field run with "needsFrequentUpdates()" true. Then during the
> background redraw (which happens every 0.5 seconds) blocks with
> "HasUpdatableField()" set have a recalculateFields() done on them. If
> the field width changes on the recalculation, the block is reformated.
> Anyway it all works rather nicely and scales reasonablly well.
Sounds very nice; I wish thought of it myself :-).

> Fields like "Current Time" and "Word Count" have
> "needsFrequentUpdates()" set true. Fields like "date", "page number"
> and "liast label" do not.
Except the "page number" field is layout dependent and should
update if as a result of layout changes it moves onto a different
page. The reason I added the layout rescanning code was that
fields such as "page reference" would not reliably update. I think
what we still need is "updateFields" method in
ap_EditMethods.cpp, that the user could call to update all fields in
the document, and would be automatically called (or better, based
on preference settings) before printing.

Tomas



This archive was generated by hypermail 2b25 : Fri Feb 01 2002 - 04:25:39 CST