Changes:
- A system for latching and locking views
- Some crash fixes
- Locale-flavored terminals
- A way to add locale-flavored emoji and numbers layouts
- Making the code less annoying to work with in some places
- Fixed layout changes on newer GSettings
- Mod4 modifier
- Better session registration
- New layouts: Dvorak, Colemak wide, hebrew, wide Thai
Layout type switching outside of overlay was always done with gsettings in the middle, assuming that all clicks on languages in the popover result in a gsettings event. That's a bad assumption if there's only one xkb lang present.
This is a simple work around. A better solution would be to turn the entire system of layout switching into a central object that receives messages about changes that need to be applied, and then applies them.
From now on, all the parameters for loading layout are handled inside a single pure function, which makes them possible to test.
As a side benefit, the old preference order function composed of a mess of nested procedures is gone.
There are some hacks here in the form of an extra field "appears_locked_from", which can be used to hint that the user should see the button as locked. Without it, there's some confusion on user side regarding buttons that change states unprompted.
The Hebrew layout was a non standard one -
this should now be fixed.
The left shift key was removed, since Hebrew
does not have capital letters.
Signed-off-by: Kozova1 <mug66kk@gmail.com>
This commit adds translations in Hebrew for most layouts.
Note: the hebrew file seems to be named incorrectly,
is that intentional? (he_IL.txt instead of he-IL.txt)
Signed-off-by: Kozova1 <mug66kk@gmail.com>
So far squeeboard only did half of the registration failing
to respond to the signals sent by the session.
This causes problems e.g. when exiting the session since the it
thinks the client hangs or is busy.
Closes: #274
Geometry is now permanently married to the widget rather the renderer. While geometry is not always defined, C doesn't support sum types, so checks won't be enforced by the compiler. It's OK to pretend there's always some geometry to avoid crashes.