]> git.lyx.org Git - lyx.git/blobdiff - development/PAINTING_ANALYSIS
g-brief loads babel internally. So don't load it ourselves.
[lyx.git] / development / PAINTING_ANALYSIS
index 32bc93a5ff94169747bb454efeae3c96f9571b34..a506371965a6b9af49744526520fdca6277959de 100644 (file)
@@ -11,7 +11,7 @@ Please keep this file up to date as the code evolves!!!
 Abbreviations:
 bv: BufferView
 pm: ParagraphMetrics
-tm::TextMetrics
+tm: TextMetrics
 
 * Questions / Ideas
 
@@ -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 and at
+top-level, 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
@@ -87,16 +76,8 @@ a lot the amount of stuff to redraw.
 It should not be necessary to access the Paragraph object to draw.
 Adding the static elements to Row is a lot of work, but worth it IMO.
 
-** Create a unique row by paragraph and break it afterwards
-
-This should be a performance gain (only if paragraph breaking still
-shows as expensive after the rest is done)
-
-** do not add the vertical margin of main text to first/last row
-
-Would make code cleaner. Probably no so difficult.
-
 ** When a paragraph ends with a newline, compute correctly the height of the extra row.
+
 ** Merging bv::updateMetrics and tm::metrics
 
 While the full metrics computation tries hard to limit the number of
@@ -139,15 +120,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.
 
@@ -165,6 +145,9 @@ tm::redoParagraph will call Inset::metrics for each inset. In the case
 of text insets, this will invoke recursively tm::metrics, which redoes
 all the paragraphs of the inset.
 
+Then, a single big row is created in tm::tokenizeParagraph, which is
+later broken in multiple rows by tm::breakParagraph.
+
 At the end of the function, bv::updatePosCache is called. It triggers
 a repaint of the document with a NullPainter (a painter that does
 nothing). This has the effect of caching all insets positions.