SF.net SVN: geany:[5121] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Aug 10 12:46:31 UTC 2010
Revision: 5121
http://geany.svn.sourceforge.net/geany/?rev=5121&view=rev
Author: ntrel
Date: 2010-08-10 12:46:30 +0000 (Tue, 10 Aug 2010)
Log Message:
-----------
Fix writing the default value when a key is missing for hidden
prefs, even if it was overridden when it was originally read.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/stash.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-08-10 12:43:30 UTC (rev 5120)
+++ trunk/ChangeLog 2010-08-10 12:46:30 UTC (rev 5121)
@@ -6,6 +6,9 @@
merged into one enum; the order of keybindings is now just the
order they are added to each group. Keybindings can be reordered
without breaking the plugin ABI but groups must stay the same.
+ * src/stash.c:
+ Fix writing the default value when a key is missing for hidden
+ prefs, even if it was overridden when it was originally read.
2010-08-05 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/stash.c
===================================================================
--- trunk/src/stash.c 2010-08-10 12:43:30 UTC (rev 5120)
+++ trunk/src/stash.c 2010-08-10 12:46:30 UTC (rev 5121)
@@ -101,9 +101,9 @@
struct StashPref
{
GType setting_type; /* e.g. G_TYPE_INT */
- gpointer setting;
+ gpointer setting; /* Address of a variable */
const gchar *key_name;
- gpointer default_value;
+ gpointer default_value; /* Default value, e.g. (gpointer)1 */
GType widget_type; /* e.g. GTK_TYPE_TOGGLE_BUTTON */
StashWidgetID widget_id; /* (GtkWidget*) or (gchar*) */
gpointer fields; /* extra fields */
@@ -233,15 +233,21 @@
foreach_array(StashPref, entry, group->entries)
{
- /* don't overwrite write_once prefs */
- if (group->write_once && action == SETTING_WRITE &&
- g_key_file_has_key(keyfile, group->name, entry->key_name, NULL))
- continue;
+ gpointer tmp = entry->setting;
+
/* don't override settings with default values */
if (!group->use_defaults && action == SETTING_READ &&
!g_key_file_has_key(keyfile, group->name, entry->key_name, NULL))
continue;
+ /* don't overwrite write_once prefs */
+ if (group->write_once && action == SETTING_WRITE)
+ {
+ if (g_key_file_has_key(keyfile, group->name, entry->key_name, NULL))
+ continue;
+ /* We temporarily use the default value for writing */
+ entry->setting = &entry->default_value;
+ }
switch (entry->setting_type)
{
case G_TYPE_BOOLEAN:
@@ -251,13 +257,15 @@
case G_TYPE_STRING:
handle_string_setting(group, entry, keyfile, action); break;
default:
- /* G_TYPE_STRV is not a constant */
+ /* Note: G_TYPE_STRV is not a constant, can't use case label */
if (entry->setting_type == G_TYPE_STRV)
handle_strv_setting(group, entry, keyfile, action);
else
g_warning("Unhandled type for %s::%s in %s()!", group->name, entry->key_name,
G_STRFUNC);
}
+ if (group->write_once && action == SETTING_WRITE)
+ entry->setting = tmp;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list