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);
|
gboolean meta_prefs_remove_keybinding (const char *name);
|
||||||
|
|
||||||
GList * meta_prefs_get_keybindings (void);
|
GList * meta_prefs_get_keybindings (void);
|
||||||
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
|
void meta_prefs_get_overlay_bindings (MetaKeyCombo combos[2]);
|
||||||
void meta_prefs_get_locate_pointer_binding (MetaKeyCombo *combo);
|
void meta_prefs_get_locate_pointer_bindings (MetaKeyCombo combos[2]);
|
||||||
const char * meta_prefs_get_iso_next_group_option (void);
|
const char * meta_prefs_get_iso_next_group_option (void);
|
||||||
gboolean meta_prefs_is_locate_pointer_enabled (void);
|
gboolean meta_prefs_is_locate_pointer_enabled (void);
|
||||||
|
|
||||||
|
@ -823,21 +823,21 @@ reload_active_keyboard_layouts (MetaKeyBindingManager *keys)
|
|||||||
static void
|
static void
|
||||||
reload_combos (MetaKeyBindingManager *keys)
|
reload_combos (MetaKeyBindingManager *keys)
|
||||||
{
|
{
|
||||||
MetaKeyCombo combo;
|
MetaKeyCombo combos[2];
|
||||||
|
|
||||||
g_hash_table_remove_all (keys->key_bindings_index);
|
g_hash_table_remove_all (keys->key_bindings_index);
|
||||||
|
|
||||||
reload_active_keyboard_layouts (keys);
|
reload_active_keyboard_layouts (keys);
|
||||||
|
|
||||||
meta_prefs_get_overlay_binding (&combo);
|
meta_prefs_get_overlay_bindings (combos);
|
||||||
resolve_key_combo (keys,
|
resolve_special_key_combo (keys,
|
||||||
&combo,
|
combos,
|
||||||
&keys->overlay_resolved_key_combo);
|
&keys->overlay_resolved_key_combo);
|
||||||
|
|
||||||
meta_prefs_get_locate_pointer_binding (&combo);
|
meta_prefs_get_locate_pointer_bindings (combos);
|
||||||
resolve_key_combo (keys,
|
resolve_special_key_combo (keys,
|
||||||
&combo,
|
combos,
|
||||||
&keys->locate_pointer_resolved_key_combo);
|
&keys->locate_pointer_resolved_key_combo);
|
||||||
|
|
||||||
reload_iso_next_group_combos (keys);
|
reload_iso_next_group_combos (keys);
|
||||||
|
|
||||||
|
@ -77,8 +77,8 @@ static GList *listeners = NULL;
|
|||||||
static GHashTable *settings_schemas;
|
static GHashTable *settings_schemas;
|
||||||
|
|
||||||
static ClutterModifierType mouse_button_mods = CLUTTER_MOD1_MASK;
|
static ClutterModifierType mouse_button_mods = CLUTTER_MOD1_MASK;
|
||||||
static MetaKeyCombo overlay_key_combo = { 0, 0, 0 };
|
static MetaKeyCombo overlay_key_combos[2] = { 0 };
|
||||||
static MetaKeyCombo locate_pointer_key_combo = { 0, 0, 0 };
|
static MetaKeyCombo locate_pointer_key_combos[2] = { 0 };
|
||||||
static GDesktopFocusMode focus_mode = G_DESKTOP_FOCUS_MODE_CLICK;
|
static GDesktopFocusMode focus_mode = G_DESKTOP_FOCUS_MODE_CLICK;
|
||||||
static GDesktopFocusNewWindows focus_new_windows = G_DESKTOP_FOCUS_NEW_WINDOWS_SMART;
|
static GDesktopFocusNewWindows focus_new_windows = G_DESKTOP_FOCUS_NEW_WINDOWS_SMART;
|
||||||
static gboolean raise_on_click = TRUE;
|
static gboolean raise_on_click = TRUE;
|
||||||
@ -1470,26 +1470,30 @@ overlay_key_handler (GVariant *value,
|
|||||||
gpointer *result,
|
gpointer *result,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
MetaKeyCombo combo;
|
MetaKeyCombo combos[2] = { 0 };
|
||||||
const gchar *string_value;
|
const gchar *string_value;
|
||||||
|
int i;
|
||||||
|
|
||||||
*result = NULL; /* ignored */
|
*result = NULL; /* ignored */
|
||||||
string_value = g_variant_get_string (value, NULL);
|
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,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
"Failed to parse value for overlay-key");
|
"Failed to parse value for overlay-key");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
combo.modifiers = 0;
|
for (i = 0; i < G_N_ELEMENTS (combos); i++)
|
||||||
|
|
||||||
if (overlay_key_combo.keysym != combo.keysym ||
|
|
||||||
overlay_key_combo.keycode != combo.keycode)
|
|
||||||
{
|
{
|
||||||
overlay_key_combo = combo;
|
combos[i].modifiers = 0;
|
||||||
queue_changed (META_PREF_KEYBINDINGS);
|
|
||||||
|
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;
|
return TRUE;
|
||||||
@ -1500,26 +1504,30 @@ locate_pointer_key_handler (GVariant *value,
|
|||||||
gpointer *result,
|
gpointer *result,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
MetaKeyCombo combo;
|
MetaKeyCombo combos[2] = { 0 };
|
||||||
const gchar *string_value;
|
const gchar *string_value;
|
||||||
|
int i;
|
||||||
|
|
||||||
*result = NULL; /* ignored */
|
*result = NULL; /* ignored */
|
||||||
string_value = g_variant_get_string (value, NULL);
|
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,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
"Failed to parse value for locate-pointer-key");
|
"Failed to parse value for locate-pointer-key");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
combo.modifiers = 0;
|
for (i = 0; i < G_N_ELEMENTS (combos); i++)
|
||||||
|
|
||||||
if (locate_pointer_key_combo.keysym != combo.keysym ||
|
|
||||||
locate_pointer_key_combo.keycode != combo.keycode)
|
|
||||||
{
|
{
|
||||||
locate_pointer_key_combo = combo;
|
combos[i].modifiers = 0;
|
||||||
queue_changed (META_PREF_KEYBINDINGS);
|
|
||||||
|
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;
|
return TRUE;
|
||||||
@ -1729,7 +1737,8 @@ init_bindings (void)
|
|||||||
pref = g_new0 (MetaKeyPref, 1);
|
pref = g_new0 (MetaKeyPref, 1);
|
||||||
pref->name = g_strdup ("overlay-key");
|
pref->name = g_strdup ("overlay-key");
|
||||||
pref->action = META_KEYBINDING_ACTION_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;
|
pref->builtin = 1;
|
||||||
|
|
||||||
g_hash_table_insert (key_bindings, g_strdup (pref->name), pref);
|
g_hash_table_insert (key_bindings, g_strdup (pref->name), pref);
|
||||||
@ -1737,7 +1746,8 @@ init_bindings (void)
|
|||||||
pref = g_new0 (MetaKeyPref, 1);
|
pref = g_new0 (MetaKeyPref, 1);
|
||||||
pref->name = g_strdup ("locate-pointer-key");
|
pref->name = g_strdup ("locate-pointer-key");
|
||||||
pref->action = META_KEYBINDING_ACTION_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;
|
pref->builtin = 1;
|
||||||
|
|
||||||
g_hash_table_insert (key_bindings, g_strdup (pref->name), pref);
|
g_hash_table_insert (key_bindings, g_strdup (pref->name), pref);
|
||||||
@ -2013,15 +2023,17 @@ meta_prefs_get_keybindings (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
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
|
gboolean
|
||||||
|
Loading…
x
Reference in New Issue
Block a user