Commit Graph

37 Commits

Author SHA1 Message Date
d801b77e96 popover: Ignore return value
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/621>
2024-03-10 17:37:52 +01:00
15ebd0ffaf Switch to glib v2_58
Remove the ancient fallbacks

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/621>
2024-03-10 17:37:52 +01:00
aa513b5cd9 Replace "Continue" with "ControlFlow"
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/620>
2024-03-10 15:44:28 +00:00
86674507e1 src: popover: fix build with newer gtk-rs
`gtk-rs` v0.16+ no longer exposes the internal fields of the
`gtk::Rectangle` struct, mandating the use of the `new()` function
instead.

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/620>
2024-03-10 15:44:28 +00:00
dcz
b0bf78b2a6 Merge branch 'saver' into 'master'
popover: Deactivate settings button when lock screen is on

See merge request World/Phosh/squeekboard!582
2023-01-02 12:21:23 +00:00
828279d03c rust: Use 2018 eition
This edition has better syntax around scoping and `use`.
2022-12-21 12:20:17 +00:00
31a7acb0eb popover: Apply settings enabled stateto UI 2022-12-08 10:07:09 +00:00
c1ceec3673 state: Become the source of layout choice
A redesign of popover was needed: it can no longer query the application state directly due to current state being its own actor, so instead the popover gets a dedicated copy of the relevant state.

I'm not entirely happy with the extra complexity of having an extra actor just for 1 string, but at least the duplication between C and Rust and mutual calls have been reduced.
2022-06-06 16:10:53 +00:00
590cd71f49 state: Store layout override
Not used for any externally observable effects
2022-06-06 16:10:53 +00:00
Tor
417fe35e91 Make compatible with latest cargo deps 2022-01-30 17:47:57 +00:00
81948425d8 popover: Fix reentrancy problem
Calling popover.show() returns control to the main loop, but squeekboard structures are still borrowed meanwhile. That's dangerous and forbidden in Rust. Therefore, this forces the return from the stack and release of the borrows before the glib main loop is invoked again.
2021-12-09 12:41:58 +00:00
10ea276052 Drop custom translation handling
xkb layouts are translated fine by libgnome-desktop. If not
we should go fixing there since that makes keyboard layout
strings consistent with e.g. gnome-control-center.

There weren't any 'exotic' strings in the current translations
so what we get from libgnome-desktop should be just fine.
2021-12-09 11:29:48 +01:00
72a7825c85 popover: Don't complain about missing translations
It's fine to do all via po.
2021-12-08 15:29:57 +01:00
2aa9cf26ee popover: Make the ui file match the code file name
UI files are usually named like the code file. Stick to that
pattern.
2021-12-08 15:29:57 +01:00
9b7e065b0f popover: Move Emoji and Terminal to ui file
This allows them to be translated via po so we don't have to maintain
the translation list by hand or care about empty translation files.

The only downside is that the "overlay layouts" in OVERLAY_NAMES need to
match the ones in the ui file but since a missing one is a clean crash
when selected there's little potential for subtle breackage. We could
even ensure consistency by comparing the two at run time but they change
only slowly this is not much of an issue (compared to how e.g. new
languages can be added now).
2021-12-08 15:27:17 +01:00
eb4b630b39 popover: Allow spanning outside panel area 2021-05-08 09:12:49 +00:00
4fdce2802a layouts: Stop assuming that layout name always changes on switch
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.
2021-04-07 15:26:18 +00:00
c2c379b870 Rust: Remove unnecessary no_mangle statements to silence warnings 2021-03-09 14:59:23 +00:00
1ae29ff7bc popover: Fix prematurely deallocated CString 2021-03-09 14:36:37 +00:00
6ed2a47620 Merge branch 'popover-settings' into 'master'
Add settings option to popover

Closes #154

See merge request Librem5/squeekboard!385
2020-10-09 09:18:26 +00:00
4253bf1299 Add settings option to popover
Fixes #154
2020-10-09 19:29:48 +11:00
93ac94b83f Sort layouts by type before sorting by name
This makes it such that local layouts like emoji and terminal appear
below language layouts.

Fixes #176
2020-10-03 02:10:56 +10:00
ecfc45c2de build: Make compatible with Debian Bullseye
This commit is a bit bigger than it could have: Meson changes could have gone in separately from CI and Debian.

This commit looks more complicated than it should reasonably be. Alas, Cargo is a piece of work, and it doesn't let honest people just choose different versions of dependencies, leading to a cascade of misery. Several things were tried to curb the disaster:

- Cargo [feature] supports choosing dependencies, but doesn't support specifying dependency versions
- Cargo has a cfg() syntax in sections for choosing dependencies by build options, but it explicitly doesn't support selecting on features…
- Cargo allows choosing different dependencies based on features, so perhaps dependencies with different versions could live in stub crates pulled in as needed? Nope! If a dependency doesn't exist in the repo (and that's the point here), Cargo throws up its hands.

This means Cargo.toml needs to be generated based on the build type. More misery:

- we lose the simplicity of just doing `cargo.sh` for simple housekeeping like deps updates. HACKING.md was updated to reflect that. Perhaps that's inevitable - build options need to be like this.
- Some flaky adjustments needed in `cargo.sh` because of an additional argument that can be mistaken for an argument to the exec in `cargo run`.
- Specifying a custom `Cargo.toml` means Cargo can no longer find any tests, examples, benchmarks, or binaries, because it searches relative to the directory of `Cargo.toml`, which is now the build dir. Extra care needed to not forget about them now.

As soon as Cargo allows anything better for managing deps versions, the above should be undone in its favor.

Good side is that a couple bugs went away:

- build flags not always making it to Cargo
- arm64 builds were optional while they shouldn't
- test layouts in unit tests are loaded from an explicit directory now

The Bullseye versions of dependencies are canonical now, Buster considered legacy.
2020-06-24 15:51:21 +00:00
8ac2b5a713 gsettings: Don't crash on switching when unavailable 2020-03-03 19:46:53 +00:00
c0aee5de26 Variant: Use proper pointer conversion between C and Rust 2020-02-20 12:17:50 +00:00
1cbc21ad11 variant: Fix double-free
gio::Settings::set_value takes over ownership of the Variant sometimes, but in other cases it doesn't. To prevent this being a problem, the custom Variant is made of the type that will never have its ownership taken.

This is not necessarily consistent with what gtk-rs authors intended.

In practice, the ownership is shared by refcounting, and after the Rust reference is dropped, one taken by Settings survives.
2020-02-03 14:53:24 +00:00
c75e085dc8 logging: Unified to remove random eprint calls 2020-01-17 12:25:39 +00:00
ea84f4f031 logging: Try to improve common operations
This adds sugar for logging `Result`s with a handler, makes names evoke something closer to "logging" than "warning", tries to remove any redundant `Logging` where the module name will do, and introduces a type strictly for bad things happening.
2020-01-16 15:57:46 +00:00
0bfd846139 translations: Make the code cleaner 2020-01-07 16:18:52 +00:00
a93f3c55e7 translations: Use gnome-desktop's xkb info database for layout names 2020-01-07 16:18:52 +00:00
733cbe94ee Fix old Rust woes 2019-12-24 10:41:02 +00:00
01a8afad0d popover: Show overlays as selected 2019-12-24 10:41:02 +00:00
bafd1e6eb3 popover: Install emoji layout
In order to do that, an additional piece of state (layout switcher) was exposed to the event handlers, a separation between squeekboard-only and system layouts was introduced, along with a Translation structure to prevent mixing up strings.
2019-12-24 10:41:02 +00:00
3c45e3e53c switcher: Switch layout on menu item click 2019-11-30 15:14:45 +00:00
23693521b7 popover: Don't change "current" field on language settings, change order
Also stops crashes when sources list is empty.
2019-11-21 18:57:09 +00:00
9f88660d99 locale: Add translations for layout names
Pulled in some Unix-specific code from https://github.com/rust-locale/locale_config to reduce dependencies.

First reason to reduce dependencies: gettext-rs is not in Debian. Copying gettext-sys might have made sense, but the interface is somewhat confusing.

For translating a couple identifiers, detection and some hand-rolled hash map is all that is needed, and the option to move to gettext later remains.

locale_config has been stripped of the lazy_static dependency, which, messing with the strtup sequence, might be a source of debugging woes. Plus setting language once in the beginning is somewhat inflexible regarding runtime changes.
2019-11-08 10:21:27 +00:00
47c4119ab7 Add a popover menu to switch languages 2019-11-05 13:10:55 +00:00