[ekiga/ds-gsettings3] Prefs: Simplified code using GSettings bindings for toggles.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga/ds-gsettings3] Prefs: Simplified code using GSettings bindings for toggles.
- Date: Sat, 23 Nov 2013 13:37:39 +0000 (UTC)
commit 731c32ed3b8c09e9d878a08a435d9f2d9a036af3
Author: Damien Sandras <dsandras beip be>
Date: Sat Nov 23 12:46:41 2013 +0100
Prefs: Simplified code using GSettings bindings for toggles.
We do not need to take care anymore of:
- sensitivity of the widget wrt the writable status of the key
- modification of the widget when the key is updated
- modification of the key when the widget is updated
- preventing infinite loops
lib/engine/gui/gtk-frontend/preferences-window.cpp | 79 +-------------------
1 files changed, 2 insertions(+), 77 deletions(-)
---
diff --git a/lib/engine/gui/gtk-frontend/preferences-window.cpp
b/lib/engine/gui/gtk-frontend/preferences-window.cpp
index 454157e..21096cd 100644
--- a/lib/engine/gui/gtk-frontend/preferences-window.cpp
+++ b/lib/engine/gui/gtk-frontend/preferences-window.cpp
@@ -581,13 +581,6 @@ static void adjustment_setting_changed (GSettings *settings,
gchar *key,
gpointer data);
-static void toggle_changed (GtkCheckButton *but,
- gpointer data);
-
-static void toggle_setting_changed (GSettings *settings,
- gchar *key,
- gpointer data);
-
void
gm_prefs_window_update_devices_list (GtkWidget *prefs_window);
@@ -1841,37 +1834,17 @@ gm_pw_toggle_new (GtkWidget* grid,
int width)
{
GtkWidget *toggle = NULL;
- gchar *signal_name = NULL;
- gboolean writable = FALSE;
-
- writable = g_settings_is_writable (settings->get_g_settings (), key.c_str ());
toggle = gtk_check_button_new_with_mnemonic (label_txt);
- if (!writable)
- gtk_widget_set_sensitive (GTK_WIDGET (toggle), FALSE);
+ g_settings_bind (settings->get_g_settings (), key.c_str (),
+ toggle, "active", G_SETTINGS_BIND_DEFAULT);
- g_object_set_data_full (G_OBJECT (toggle), "key",
- (gpointer) g_strdup (key.c_str ()),
- (GDestroyNotify) g_free);
g_object_set (G_OBJECT (toggle), "expand", TRUE, NULL);
gtk_grid_attach (GTK_GRID (grid), toggle, 0, row, width, 1);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
- settings->get_bool (key));
-
if (tooltip)
gtk_widget_set_tooltip_text (toggle, tooltip);
- /* Update configuration when the user changes the selected option */
- g_signal_connect (toggle, "toggled",
- G_CALLBACK (toggle_changed), settings->get_g_settings ());
-
- /* Update the widget when the user changes the configuration */
- signal_name = g_strdup_printf ("changed::%s", key.c_str ());
- g_signal_connect (settings->get_g_settings (), signal_name,
- G_CALLBACK (toggle_setting_changed), toggle);
- g_free (signal_name);
-
gtk_widget_show_all (grid);
return toggle;
@@ -2681,54 +2654,6 @@ adjustment_setting_changed (GSettings *settings,
}
-void
-toggle_changed (GtkCheckButton *but,
- gpointer data)
-{
- GSettings *settings = NULL;
- gchar *key = NULL;
- bool current_value = FALSE;
-
- g_return_if_fail (data);
-
- settings = G_SETTINGS(data);
- key = (gchar*) g_object_get_data (G_OBJECT (but), (const gchar*) "key");
-
- current_value = g_settings_get_boolean (settings, key);
-
- if (current_value != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (but)))
- g_settings_set_boolean (settings, key, !current_value);
-}
-
-
-void
-toggle_setting_changed (GSettings *settings,
- gchar *key,
- gpointer data)
-{
- GtkWidget *e = NULL;
- gboolean current_value = FALSE;
-
- e = GTK_WIDGET (data);
-
- /* We set the new value for the widget */
- current_value = g_settings_get_boolean (settings, key);
-
- g_signal_handlers_block_matched (G_OBJECT (e),
- G_SIGNAL_MATCH_FUNC,
- 0, 0, NULL,
- (gpointer) toggle_changed,
- NULL);
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (e)) != current_value)
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (e), current_value);
- g_signal_handlers_unblock_matched (G_OBJECT (e),
- G_SIGNAL_MATCH_FUNC,
- 0, 0, NULL,
- (gpointer) toggle_changed,
- NULL);
-}
-
-
/* Public functions */
void
gm_prefs_window_update_devices_list (GtkWidget *prefs_window)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]