User-visible changes:
- Fixed a crash related to making keyboard visible.
- Better fallback: when selecting a missing layout named "fr+foo", "fr" will be used instead.
- When enabling the keyboard manually, it will never be stuck in the numbers view.
- Thai layout
- US-Colemak layout
- Czech layouts
- Esperanto layout
- Bulgarian layout
- Improved Norwegian layout
That's a lot of new layouts!
Plus a bunch of stricter warnings, MIPS64el support, and reproducible building.
The viibility manager state is changed from various handlers, which are not guaranteed to be reentrant, most notably the Wayland handler for preedit done.
As the state is changed, relevant requests to synchronize user-visible UI are fired from the same handler.
In case of imservice_handle_done, GTK widget show function was being called, which triggered another round of handling Wayland, leading to the done handler being called again, and flaking out.
To solve this, the phase of issuing commands needs to be separate from adjusting desired state. It seems that the easiest solution is to delay the show() and hide() calls into the next GTK main loop spin.
A better solution would probably inject itself directly after the change of desired state, so that *all* the side effects are delayed.
It didn't make anything more testable due to being tightly coupled to Layout.
With the last place needing the curent form abolished, it's no longer needed.
No attempt to make it more stateless and unit-testable was made though.
The goal is to be free of unused X class of problems. For this, CI and any "serious" builds will fail on warnings. Debug builds, used in development, will warn by default but not fail.
In addition, the 'strict' build option is added for when the debug build should fail on unused warnings as well.
Two variants:
* Czech Standard (= qwertz)
* Czech qwerty
The accented letters layout corresponds to the UCW [1] layout shipped
with xkb, so we follow this precedent.
Like the DE layout, and unlike the US layout, the CZ layout has a
comma key and a narrower space bar. The added comma key also serves as
a visual balance to the added accents key, to keep the spacebar
centered.
The layouts have been tested manually on PinePhone.
[1] c60b77ea51/test/data/symbols/cz (L180)