Don't block Alt + Shift when there is only one keyboard layout (#1756)

This commit is contained in:
Leo 2023-09-30 07:12:59 +09:00 committed by GitHub
parent b9744dd3fc
commit 844eb95c69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 1 deletions

View File

@ -25,6 +25,18 @@
<update_contact>contact_at_elementary.io</update_contact>
<releases>
<release version="7.1.3" date="2023-09-13" urgency="medium">
<description>
<p>Improvements:</p>
<ul>
<li>Updated translations</li>
</ul>
</description>
<issues>
<issue url="https://github.com/elementary/gala/issues/1261">Alt + Shift unnecessarily blocked when there is only one keyboard layout</issue>
</issues>
</release>
<release version="7.1.2" date="2023-08-10" urgency="medium">
<description>
<p>Improvements:</p>

View File

@ -5,6 +5,12 @@
*/
public class Gala.KeyboardManager : Object {
private const string[] BLOCKED_OPTIONS = {
"grp:alt_caps_toggle", "grp:alt_shift_toggle", "grp:alt_space_toggle",
"grp:shifts_toggle", "grp:caps_toggle", "grp:ctrl_alt_toggle",
"grp:ctrl_shift_toggle", "grp:shift_caps_toggle"
};
private static KeyboardManager? instance;
private static VariantType sources_variant_type;
private static GLib.Settings settings;
@ -90,7 +96,21 @@ public class Gala.KeyboardManager : Object {
}
}
var xkb_options = settings.get_strv ("xkb-options");
if (layouts.length == 0) {
layouts = { "us" };
variants = { "" };
}
string[] xkb_options = {};
if (layouts.length == 1) {
foreach (unowned var option in settings.get_strv ("xkb-options")) {
if (!(option in BLOCKED_OPTIONS)) {
xkb_options += option;
}
}
} else {
xkb_options = settings.get_strv ("xkb-options");
}
var layout = string.joinv (",", layouts);
var variant = string.joinv (",", variants);