X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2FPAINTING_ANALYSIS;h=a52a036aaa882ffa316da458fbd5ff44be8aa9a7;hb=1bda6da7f96fbc4906d7dd31bb2a79da1d54779a;hp=32bc93a5ff94169747bb454efeae3c96f9571b34;hpb=9e2da4a3eac83f46ab184ea8d674f84643814017;p=lyx.git diff --git a/development/PAINTING_ANALYSIS b/development/PAINTING_ANALYSIS index 32bc93a5ff..a52a036aaa 100644 --- a/development/PAINTING_ANALYSIS +++ b/development/PAINTING_ANALYSIS @@ -20,15 +20,9 @@ following section. Some actions are proposed. ** SinglePar update -The flag Update::SinglePar is set in many places but never acted on. -Instead, metrics update is skipped whenever the recorded height of -current paragraph did not change and Update::Force was not specified. -Is it better to keep that (which incurs extra work) or to condition it -on Update::SinglePar? If the first solution is kept, the flag -SingleParUpdate shall be removed. - -Moreover, I fail to see (yet) where the 'single' part of the program -is acted on. +This flag only has an effect in the current BufferView, but I think it +is useful in other views too. Doing this will require some work on the +update pipeline, though. ** Buffer::change issues @@ -40,6 +34,7 @@ a good value? NoScreenUpdate? On a related note, what is the semantics of a call to Buffer::changed(false)? What does the caller mean? + ** How to avoid redraw with FitCursor when the cursor is already OK? In this case, we invoke Buffer::change(false) with drawing disabled @@ -60,12 +55,6 @@ cursor. * Clean-up of drawing code -** Make SinglePar update flag useful again. - -The current code can be very expensive when moving cursor inside a -huge table, for example. We should test the flag again, although this -will probably lead to some glitches here and there. - ** Set Row::changed() in a finer way *** singleParUpdate @@ -139,15 +128,14 @@ DecorationUpdate). It triggers a recomputation of the metrics when either: + Update::Force has been specified + Update::FitCursor has been specified and there is a need to scroll the display. - + the current paragraph, after rebreak, does not have the same height as in - existing metrics. Note that the Update::SinglePar flag is *never* - taken into account. + + Update::SinglePar has been specified and the current paragraph has + not changed height. If a computation of metrics has taken place, Force is removed from the flags and ForceDraw is added instead. -It is OK to call processUptateFlags several times before an update. In -this case, the effects are cumulative.processUpdateFlags execute the +It is OK to call processUpateFlags several times before an update. In +this case, the effects are cumulative. processUpdateFlags executes the metrics-related actions, but defers the actual drawing to the next paint event.