prefs: Handle up to two combos for special keys
The second combo is still disabled. This is in preparation for a subsequent commit that is going to parse the preference in a different way and might end up with two combos defined. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4050>
This commit is contained in:
parent
b48c7536ab
commit
c051c2ff69
@ -145,8 +145,8 @@ gboolean meta_prefs_add_keybinding (const char *name,
|
||||
gboolean meta_prefs_remove_keybinding (const char *name);
|
||||
|
||||
GList * meta_prefs_get_keybindings (void);
|
||||
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
|
||||
void meta_prefs_get_locate_pointer_binding (MetaKeyCombo *combo);
|
||||
void meta_prefs_get_overlay_bindings (MetaKeyCombo combos[2]);
|
||||
void meta_prefs_get_locate_pointer_bindings (MetaKeyCombo combos[2]);
|
||||
const char * meta_prefs_get_iso_next_group_option (void);
|
||||
gboolean meta_prefs_is_locate_pointer_enabled (void);
|
||||
|
||||
|
@ -823,21 +823,21 @@ reload_active_keyboard_layouts (MetaKeyBindingManager *keys)
|
||||
static void
|
||||
reload_combos (MetaKeyBindingManager *keys)
|
||||
{
|
||||
MetaKeyCombo combo;
|
||||
MetaKeyCombo combos[2];
|
||||
|
||||
g_hash_table_remove_all (keys->key_bindings_index);
|
||||
|
||||
reload_active_keyboard_layouts (keys);
|
||||
|
||||
meta_prefs_get_overlay_binding (&combo);
|
||||
resolve_key_combo (keys,
|
||||
&combo,
|
||||
&keys->overlay_resolved_key_combo);
|
||||
meta_prefs_get_overlay_bindings (combos);
|
||||
resolve_special_key_combo (keys,
|
||||
combos,
|
||||
&keys->overlay_resolved_key_combo);
|
||||
|
||||
meta_prefs_get_locate_pointer_binding (&combo);
|
||||
resolve_key_combo (keys,
|
||||
&combo,
|
||||
&keys->locate_pointer_resolved_key_combo);
|
||||
meta_prefs_get_locate_pointer_bindings (combos);
|
||||
resolve_special_key_combo (keys,
|
||||
combos,
|
||||
&keys->locate_pointer_resolved_key_combo);
|
||||
|
||||
reload_iso_next_group_combos (keys);
|
||||
|
||||
|
@ -77,8 +77,8 @@ static GList *listeners = NULL;
|
||||
static GHashTable *settings_schemas;
|
||||
|
||||
static ClutterModifierType mouse_button_mods = CLUTTER_MOD1_MASK;
|
||||
static MetaKeyCombo overlay_key_combo = { 0, 0, 0 };
|
||||
static MetaKeyCombo locate_pointer_key_combo = { 0, 0, 0 };
|
||||
static MetaKeyCombo overlay_key_combos[2] = { 0 };
|
||||
static MetaKeyCombo locate_pointer_key_combos[2] = { 0 };
|
||||
static GDesktopFocusMode focus_mode = G_DESKTOP_FOCUS_MODE_CLICK;
|
||||
static GDesktopFocusNewWindows focus_new_windows = G_DESKTOP_FOCUS_NEW_WINDOWS_SMART;
|
||||
static gboolean raise_on_click = TRUE;
|
||||
@ -1470,26 +1470,30 @@ overlay_key_handler (GVariant *value,
|
||||
gpointer *result,
|
||||
gpointer data)
|
||||
{
|
||||
MetaKeyCombo combo;
|
||||
MetaKeyCombo combos[2] = { 0 };
|
||||
const gchar *string_value;
|
||||
int i;
|
||||
|
||||
*result = NULL; /* ignored */
|
||||
string_value = g_variant_get_string (value, NULL);
|
||||
|
||||
if (!string_value || !meta_parse_accelerator (string_value, &combo))
|
||||
if (!string_value || !meta_parse_accelerator (string_value, &combos[0]))
|
||||
{
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Failed to parse value for overlay-key");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
combo.modifiers = 0;
|
||||
|
||||
if (overlay_key_combo.keysym != combo.keysym ||
|
||||
overlay_key_combo.keycode != combo.keycode)
|
||||
for (i = 0; i < G_N_ELEMENTS (combos); i++)
|
||||
{
|
||||
overlay_key_combo = combo;
|
||||
queue_changed (META_PREF_KEYBINDINGS);
|
||||
combos[i].modifiers = 0;
|
||||
|
||||
if (overlay_key_combos[i].keysym != combos[i].keysym ||
|
||||
overlay_key_combos[i].keycode != combos[i].keycode)
|
||||
{
|
||||
overlay_key_combos[i] = combos[i];
|
||||
queue_changed (META_PREF_KEYBINDINGS);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -1500,26 +1504,30 @@ locate_pointer_key_handler (GVariant *value,
|
||||
gpointer *result,
|
||||
gpointer data)
|
||||
{
|
||||
MetaKeyCombo combo;
|
||||
MetaKeyCombo combos[2] = { 0 };
|
||||
const gchar *string_value;
|
||||
int i;
|
||||
|
||||
*result = NULL; /* ignored */
|
||||
string_value = g_variant_get_string (value, NULL);
|
||||
|
||||
if (!string_value || !meta_parse_accelerator (string_value, &combo))
|
||||
if (!string_value || !meta_parse_accelerator (string_value, &combos[0]))
|
||||
{
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Failed to parse value for locate-pointer-key");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
combo.modifiers = 0;
|
||||
|
||||
if (locate_pointer_key_combo.keysym != combo.keysym ||
|
||||
locate_pointer_key_combo.keycode != combo.keycode)
|
||||
for (i = 0; i < G_N_ELEMENTS (combos); i++)
|
||||
{
|
||||
locate_pointer_key_combo = combo;
|
||||
queue_changed (META_PREF_KEYBINDINGS);
|
||||
combos[i].modifiers = 0;
|
||||
|
||||
if (locate_pointer_key_combos[i].keysym != combos[i].keysym ||
|
||||
locate_pointer_key_combos[i].keycode != combos[i].keycode)
|
||||
{
|
||||
locate_pointer_key_combos[i] = combos[i];
|
||||
queue_changed (META_PREF_KEYBINDINGS);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -1729,7 +1737,8 @@ init_bindings (void)
|
||||
pref = g_new0 (MetaKeyPref, 1);
|
||||
pref->name = g_strdup ("overlay-key");
|
||||
pref->action = META_KEYBINDING_ACTION_OVERLAY_KEY;
|
||||
pref->combos = g_slist_prepend (pref->combos, &overlay_key_combo);
|
||||
pref->combos = g_slist_prepend (pref->combos, &overlay_key_combos[0]);
|
||||
pref->combos = g_slist_prepend (pref->combos, &overlay_key_combos[1]);
|
||||
pref->builtin = 1;
|
||||
|
||||
g_hash_table_insert (key_bindings, g_strdup (pref->name), pref);
|
||||
@ -1737,7 +1746,8 @@ init_bindings (void)
|
||||
pref = g_new0 (MetaKeyPref, 1);
|
||||
pref->name = g_strdup ("locate-pointer-key");
|
||||
pref->action = META_KEYBINDING_ACTION_LOCATE_POINTER_KEY;
|
||||
pref->combos = g_slist_prepend (pref->combos, &locate_pointer_key_combo);
|
||||
pref->combos = g_slist_prepend (pref->combos, &locate_pointer_key_combos[0]);
|
||||
pref->combos = g_slist_prepend (pref->combos, &locate_pointer_key_combos[1]);
|
||||
pref->builtin = 1;
|
||||
|
||||
g_hash_table_insert (key_bindings, g_strdup (pref->name), pref);
|
||||
@ -2013,15 +2023,17 @@ meta_prefs_get_keybindings (void)
|
||||
}
|
||||
|
||||
void
|
||||
meta_prefs_get_overlay_binding (MetaKeyCombo *combo)
|
||||
meta_prefs_get_overlay_bindings (MetaKeyCombo combos[2])
|
||||
{
|
||||
*combo = overlay_key_combo;
|
||||
combos[0] = overlay_key_combos[0];
|
||||
combos[1] = overlay_key_combos[1];
|
||||
}
|
||||
|
||||
void
|
||||
meta_prefs_get_locate_pointer_binding (MetaKeyCombo *combo)
|
||||
meta_prefs_get_locate_pointer_bindings (MetaKeyCombo combos[2])
|
||||
{
|
||||
*combo = locate_pointer_key_combo;
|
||||
combos[0] = locate_pointer_key_combos[0];
|
||||
combos[1] = locate_pointer_key_combos[1];
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
Loading…
x
Reference in New Issue
Block a user