keyboard: Set repeat-interval correctly
This sets the repeat-interval key in milliseconds. From a minimum of
one char per 2 seconds up to 50 characters per second (as per
requirements listed in 84eed6b0cf
).
https://bugzilla.gnome.org/show_bug.cgi?id=646241
This commit is contained in:
parent
c80d4aa85a
commit
6dd3318b80
1 changed files with 10 additions and 4 deletions
|
@ -30,9 +30,12 @@ get_rate (GValue *value,
|
|||
gpointer user_data)
|
||||
{
|
||||
int rate;
|
||||
gdouble fraction;
|
||||
|
||||
rate = g_variant_get_int32 (variant);
|
||||
g_value_set_double (value, 1 / (gdouble) rate / 1000);
|
||||
rate = g_variant_get_uint32 (variant);
|
||||
fraction = 1.0 / ((gdouble) rate / 1000.0);
|
||||
g_value_set_double (value, fraction);
|
||||
g_debug ("Getting fraction %f for msecs %d", fraction, rate);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -42,9 +45,12 @@ set_rate (const GValue *value,
|
|||
gpointer user_data)
|
||||
{
|
||||
gdouble rate;
|
||||
int msecs;
|
||||
|
||||
rate = g_value_get_double (value);
|
||||
return g_variant_new_int32 ((1 / rate) * 1000);
|
||||
msecs = (1 / rate) * 1000;
|
||||
g_debug ("Setting repeat rate to %d", msecs);
|
||||
return g_variant_new_uint32 (msecs);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -66,7 +72,7 @@ keyboard_general_init (CcPanel *panel, GtkBuilder *builder)
|
|||
g_settings_bind (keyboard_settings, "delay",
|
||||
gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_delay_scale"))), "value",
|
||||
G_SETTINGS_BIND_DEFAULT);
|
||||
g_settings_bind_with_mapping (keyboard_settings, "rate",
|
||||
g_settings_bind_with_mapping (keyboard_settings, "repeat-interval",
|
||||
gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_speed_scale"))), "value",
|
||||
G_SETTINGS_BIND_DEFAULT,
|
||||
get_rate, set_rate, NULL, NULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue