Hi Neil,
Here are 5 patches fixing or improving various issues with accessibility
support in GTK.
> 1-GTK__Add_some_documentation_on_accessible_object_reference_ownerships.patch
Just adds some explanations on the implementation as you asked some time
ago.
> 2-GTK__Fix_accessible_object_lifetime_on_GTK___3_8.patch
Fix crash when destroying ScintillaObjects, as mentioned in
https://groups.google.com/d/msg/scintilla-interest/uFysitczmag/qjZ30KN_BwAJ
2 Geany user suffered from the crash on GTK2, and I could reproduce the
crash with GTK3 if tricking it to use the path supposed to be for 3.2 to
3.6 (but that should work with any version >= 3.2, it's just uglier than
necessary on >= 3.8).
Fixing the code as I mentioned fixes both problems, and makes better sense.
As said, this is a crasher on GTK2 at least for some people, so I think
it's very important, probably even worth a 3.7.2 (or 3.7.1.1, anything)
as you said.
Sorry for that one :(
> 3-GTK__Fix_off_by_one_error_in_accessible_attribute_runs.patch
Fix reporting attribute ranges, which were 1 character too short (ATK
expects the position *after* it ends, not the last position in that run)
> 4-GTK__Fix_reporting_deletion_length_in_the_accessible.patch
Fix mostly random length reported for deletions events. As explained in
the patch, I was trying to count characters after they were removed from
the buffer, so it obviously didn't count what was expected. Caching the
length isn't too pretty, but I can't see a better solution, and it's not
so bad.
This one might be fairly important too as it may report totally
incorrect information to the accessibility layer for deletion operations.
> 5-GTK__Ensure_styles_are_valid_when_retrieving_them_for_accessibility_purposes.patch
As ATK allows retrieving information anywhere in the buffer, style might
or might not be up to date. This lead to attribute runs and character
extents to be incorrect for many offscreen ranges as they depend on the
styling.
This one somewhat relies on EnsureStyledTo() to be optimized in the
sense of not actually syling one single byte at a time (or at least
getting more for longer ranges from the lexer). If that's not a valid
assumption, it might be worth making ScintillaGTKAccessible::StyleAt()
ask for longer runs in some cases. But well, it's a possible
performance issue only for retrieving attributes on unstyled areas, so
it might not be a big issue anyway.
Regards,
Colomban