]> git.lyx.org Git - lyx.git/commit
Allow multiple calls to processUpdateFlags before redraw
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 11 Oct 2017 16:00:48 +0000 (18:00 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Tue, 24 Oct 2017 20:25:29 +0000 (22:25 +0200)
commit8d8988de475bf2055f253823e53fd5627be5de78
tree7433366a0d41b8eea7ab6613004af6c0818e308d
parentdac2dea8ad7c00999263f490a186178e124fe15e
Allow multiple calls to processUpdateFlags before redraw

The goal of this commit is to ensure that a processUpdateFlags call
that requires no redraw will not override a previous one that did
require a redraw.

To this end, the semantics of the flag argument is now different: its
value is now OR'ed with a private update_flags_ variable. This
variable is only reset after the buffer view has actually been
redrawn.

A new Update::ForceRedraw flag has been added. It requires a full
redraw but no metrics computation. It is not used in the main code
(yet), but avoids to compute metrics repeatedly in consecutive
processUpdateFlags calls.

The process is now as follows:
- if flags is just None, return immediately, there is nothing to do.
- the Force flag is honored (full metrics computation) and replaced
  with ForceDraw.
- the FitCursor flag is honored and removed from the flags.
- the SinglePar update is added if ForceDraw is not in flags and only
  the current par has been modified.

The remaining flags are only then added to the BufferView update
flags, and the update strategy is computed for the next paint event.

Finally the dubious call to updateMacros in updateMetrics has been
removed for performance reasons.
development/PAINTING_ANALYSIS
src/BufferView.cpp
src/BufferView.h
src/TextMetrics.cpp
src/update_flags.h