[gnome-control-center] keyboard: Switch repeat rate/speed to be a fraction
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] keyboard: Switch repeat rate/speed to be a fraction
- Date: Mon, 28 Feb 2011 16:25:50 +0000 (UTC)
commit 84eed6b0cf9f0b44db5a030018bfca17dae18fd5
Author: Bastien Nocera <hadess hadess net>
Date: Mon Feb 28 14:46:03 2011 +0000
keyboard: Switch repeat rate/speed to be a fraction
Instead of settings the absolute value of the repeat rate in msecs
through the scale, we set the number of chars per sec, and
use GSettings' bindings functions to transform those a timeout.
https://bugzilla.gnome.org/show_bug.cgi?id=569612
panels/keyboard/gnome-keyboard-panel.ui | 14 +++++++-------
panels/keyboard/keyboard-general.c | 30 +++++++++++++++++++++++++++---
2 files changed, 34 insertions(+), 10 deletions(-)
---
diff --git a/panels/keyboard/gnome-keyboard-panel.ui b/panels/keyboard/gnome-keyboard-panel.ui
index b961a97..6dbe9bb 100644
--- a/panels/keyboard/gnome-keyboard-panel.ui
+++ b/panels/keyboard/gnome-keyboard-panel.ui
@@ -815,13 +815,6 @@
<action-widget response="0">button1</action-widget>
</action-widgets>
</object>
- <object class="GtkAdjustment" id="repeat_speed_adjustment">
- <property name="lower">10</property>
- <property name="upper">110</property>
- <property name="value">30</property>
- <property name="step_increment">10</property>
- <property name="page_increment">10</property>
- </object>
<object class="GtkSizeGroup" id="lower_sizegroup">
<widgets>
<widget name="delay_short_label"/>
@@ -836,6 +829,13 @@
<property name="step_increment">10</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkAdjustment" id="repeat_speed_adjustment">
+ <property name="lower">0.5</property>
+ <property name="upper">50</property>
+ <property name="value">33.3</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">1</property>
+ </object>
<object class="GtkSizeGroup" id="sliders_sizegroup">
<widgets>
<widget name="cursor_blink_time_scale"/>
diff --git a/panels/keyboard/keyboard-general.c b/panels/keyboard/keyboard-general.c
index 9dd5ea6..dd4c0a3 100644
--- a/panels/keyboard/keyboard-general.c
+++ b/panels/keyboard/keyboard-general.c
@@ -24,6 +24,29 @@
static GSettings *keyboard_settings = NULL;
static GSettings *interface_settings = NULL;
+static gboolean
+get_rate (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ int rate;
+
+ rate = g_variant_get_int32 (variant);
+ g_value_set_double (value, 1 / (gdouble) rate / 1000);
+ return TRUE;
+}
+
+static GVariant *
+set_rate (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
+ gdouble rate;
+
+ rate = g_value_get_double (value);
+ return g_variant_new_int32 ((1 / rate) * 1000);
+}
+
void
keyboard_general_init (CcPanel *panel, GtkBuilder *builder)
{
@@ -39,9 +62,10 @@ 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 (keyboard_settings, "rate",
- gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_speed_scale"))), "value",
- G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind_with_mapping (keyboard_settings, "rate",
+ 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);
g_settings_bind (interface_settings, "cursor-blink",
gtk_builder_get_object (builder, "cursor_toggle"), "active",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]