Added check for value sameness

This commit is contained in:
Jesse van den Kieboom 2005-11-06 15:52:50 +00:00
parent 8967e4b40f
commit 12368a24bd
1 changed files with 10 additions and 5 deletions

View File

@ -92,14 +92,19 @@ gm_options_dup(GmOptions *source) {
void
gm_options_set(GmOptions * options, const gchar *key, const gchar *value) {
gchar *trimmed = gm_string_trim(key);
gboolean changed = g_hash_table_lookup(options->priv->options, trimmed)
!= NULL;
gchar *lookup = g_hash_table_lookup(options->priv->options, trimmed);
gboolean changed = lookup != NULL && lookup != value;
g_hash_table_insert(options->priv->options, trimmed, g_strdup(value));
if (lookup != value) {
g_hash_table_insert(options->priv->options, g_strdup(trimmed),
g_strdup(value));
}
if (changed) {
g_signal_emit(options, options_signals[OPTION_CHANGED], 0, key);
g_signal_emit(options, options_signals[OPTION_CHANGED], 0, trimmed);
}
g_free(trimmed);
}
const gchar *
@ -112,7 +117,7 @@ gm_options_set_int(GmOptions *options, const gchar *key, int value) {
gchar val[15];
g_snprintf((gchar *) &val, 15, "%d", value);
gm_options_set(options, key, (const gchar *) &val);
gm_options_set(options, key, (const gchar *)val);
}
int