This will help make the init procedure safer, by limiting the number of Rust objects that need to be carried to the C side and may be mangled on the way there.
The second benefit is that it allows outputs to become part of new state management.
gtk-sys and cairo-sys were set to "anything" in the hope that the dependency resolver in cargo would use the same version as other dependencies, which consume objects from them.
That's not the case though, and they went out of sync.
This pins the dependencies to what is de facto being used.
This release adds new layouts, and new types of layout, plus fixes a regular allotment of bugs, and improvs the internal design a whole lot.
Here are the changes that you might notice without digging into code.
Layouts:
- Arabic layout from Khaled Eldoheiri
- Swiss French from Jordi
- Bulgarian from Plamen Stoev
- Swiss German from Patrick Jörg
- Armenian from Norayr Chilingarian
- Wide French terminal from Arnaud Ferraris
- PIN layout
Improvements:
- Integration into GNOME translations
- A debug mode that starts the GTK inspector
- Better errors when can't start
- Better docs (thanks PhilProg)
Bug fixes:
- Unblurred icons
- Not showing on the lock screen for no reason
- Theme changes without restarting now
- Input hint can take effect without having to refocus the field
This reverts commit 5c1b28e4ed8b046a251609e5f7db4b4df9e710f5.
It has only been needed to move Rust structure across C bridges. That's unneeded with more integration.
This ensures that the new state machine is fed events, as well as that its results are applied.
The old ad-hoc system is removed.
There is one regression where the last layout will be used when the panel is brought up manually.
Handling visibility state ad-hoc has shortcomings in testability and locality, and this module attmepts to rectify that by creating an explicit state machine, along with a loop to drive it.
Actually applying state is not implemented here.