2 changes to make a11y quite a bit faster especially when performing bulk search & replace.
The first commit makes use of the character offset cache when performing reverse-lookup, e.g. when we need to convert a position given by the a11y layer to one understood by Scintilla.
The second avoids clearing the cache when it gets invalidated, and instead updates it to be valid right away. This avoids potentially costly re-computation of the cache that becomes problematic when we often need a position near the end of the file but keep invalidating everything after lines near the start. This happens especially when performing bulk search & replace with the cursor near the end. This gives a slightly higher cost at invalidating the cache (that now updates it based on a known delta), but a lot less when it's content is needed again.
Fixes #2092. You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/2097
-- Commit Summary --
* scintilla: GTK: a11y: Optimize byte to character offset conversion * scintilla: GTK: a11y: Avoid clearing cache when possible
-- File Changes --
M scintilla/gtk/ScintillaGTKAccessible.cxx (15) M scintilla/gtk/ScintillaGTKAccessible.h (14)
-- Patch Links --
https://github.com/geany/geany/pull/2097.patch https://github.com/geany/geany/pull/2097.diff