Specifically, when a style change happens that ends up
not changing the size of anything, then track that
lack of size change enough to be able to avoid
calling on-reflow.
This is important for the interaction between the
colorer and the search bubbles in DrRacket. That is,
when you make an edit that causes the colorer to have
lots of work, then each chunk of work it does before
yielding control to the event loop would also trigger
a call to on-reflow, which would cause the search bubbles
to recompute their sizes. Overall, the main bad thing
this does is cause lots of allocation and aside from
that it doesn't hurt interactivity. Still, there is a
lot of useless work here, and those extra GCs can be
pretty substantial when you're doing something crazy like
searching for " " in a big file.... (there are 95k spaces
in unit.rkt, in case you were curious)
Changed `open-output-text-editor' to put its additions into
an edit sequence to better work with threads.
Fixed problems in editor-canvas refresh and resize events, where
the editor's refresh synchronization wasn't used properly.
Fixed race conditions in the the protocol that is used to separate
refreshes and edit sequences.
Related to PR 12749
- adds a `#:timeout-lock-there' argument to `get-preference'
- fixes preference looup in `racket/gui'
- make preference names consistently use `GRacket' and consistently
fall back on `MrEd' names
- fix Emacs-style undo mode while we're at it
which the framework's background-rectangle implementation can use
to queue refreshes for changing rectangles, instead of requiring a
full-canvas refresh