summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Nickell <snickell@stanford.edu>2002-03-15 09:23:45 +0000
committerSeth Nickell <seth@src.gnome.org>2002-03-15 09:23:45 +0000
commit8e834c8342c78da4bebdf7f452c548148446de76 (patch)
treefb2366e391b744ece23f97d1ff1da4afa65f276a
parentc10c6c06cead8129f4bfe341b8f0b4cea88a2670 (diff)
downloadgnome-control-center-8e834c8342c78da4bebdf7f452c548148446de76.tar.gz
Add an enum type for specifying that we don't know the type (i.e. the key
2002-03-15 Seth Nickell <snickell@stanford.edu> * preferences.c: (bg_preferences_load), (bg_preferences_merge_entry), (read_wptype_from_string), (read_color_from_string), (bg_preferences_get_wptype_as_string): * preferences.h: Add an enum type for specifying that we don't know the type (i.e. the key was not available, or set to something invalid). Currently it was using -1, which barfs with some compilers that set enums to be uint.
-rw-r--r--libbackground/ChangeLog12
-rw-r--r--libbackground/preferences.c21
2 files changed, 23 insertions, 10 deletions
diff --git a/libbackground/ChangeLog b/libbackground/ChangeLog
index b7cfa1d0e..ab1f2fb8d 100644
--- a/libbackground/ChangeLog
+++ b/libbackground/ChangeLog
@@ -1,3 +1,15 @@
+2002-03-15 Seth Nickell <snickell@stanford.edu>
+
+ * preferences.c: (bg_preferences_load),
+ (bg_preferences_merge_entry), (read_wptype_from_string),
+ (read_color_from_string), (bg_preferences_get_wptype_as_string):
+ * preferences.h:
+
+ Add an enum type for specifying that we don't know the type (i.e. the
+ key was not available, or set to something invalid). Currently it
+ was using -1, which barfs with some compilers that set enums
+ to be uint.
+
2002-03-09 Richard Hestilow <hestilow@ximian.com>
* preview-file-selection.[ch]: Added.
diff --git a/libbackground/preferences.c b/libbackground/preferences.c
index 463a9772e..947984e5b 100644
--- a/libbackground/preferences.c
+++ b/libbackground/preferences.c
@@ -238,7 +238,7 @@ bg_preferences_load (BGPreferences *prefs)
prefs->wallpaper_type = read_wptype_from_string (gconf_client_get_string (client, BG_PREFERENCES_PICTURE_OPTIONS, &error));
- if (prefs->wallpaper_type == -1) {
+ if (prefs->wallpaper_type == WPTYPE_UNSET) {
prefs->wallpaper_enabled = FALSE;
prefs->wallpaper_type = WPTYPE_CENTERED;
} else {
@@ -262,13 +262,12 @@ bg_preferences_merge_entry (BGPreferences *prefs,
if (!strcmp (entry->key, BG_PREFERENCES_PICTURE_OPTIONS)) {
wallpaper_type_t wallpaper_type = read_wptype_from_string (g_strdup (gconf_value_get_string (value)));
- if (wallpaper_type == -1) {
+ if (wallpaper_type == WPTYPE_UNSET) {
prefs->wallpaper_enabled = FALSE;
} else {
prefs->wallpaper_type = wallpaper_type;
prefs->wallpaper_enabled = TRUE;
}
-
}
else if (!strcmp (entry->key, BG_PREFERENCES_PICTURE_FILENAME)) {
prefs->wallpaper_filename = g_strdup (gconf_value_get_string (value));
@@ -301,8 +300,11 @@ bg_preferences_merge_entry (BGPreferences *prefs,
prefs->gradient_enabled = TRUE;
}
else if (!strcmp (entry->key, BG_PREFERENCES_DRAW_BACKGROUND)) {
- if (gconf_value_get_bool (value))
- prefs->enabled = TRUE;
+ if (gconf_value_get_bool (value) &&
+ (prefs->wallpaper_filename != NULL) &&
+ strcmp (prefs->wallpaper_filename, "") != 0 &&
+ strcmp (prefs->wallpaper_filename, "(none)") != 0)
+ prefs->wallpaper_enabled = TRUE;
else
prefs->enabled = FALSE;
} else {
@@ -313,7 +315,7 @@ bg_preferences_merge_entry (BGPreferences *prefs,
static wallpaper_type_t
read_wptype_from_string (gchar *string)
{
- wallpaper_type_t type = -1;
+ wallpaper_type_t type = WPTYPE_UNSET;
if (string) {
if (!strncmp (string, "wallpaper", sizeof ("wallpaper"))) {
@@ -363,10 +365,7 @@ read_color_from_string (const gchar *string)
rgb = ((color->red >> 8) << 16) ||
((color->green >> 8) << 8) ||
(color->blue >> 8);
-#if 0
- /* fixme: I am not sure, but this can be accomplished otherwise */
- color->pixel = gdk_rgb_xpixel_from_rgb (rgb);
-#endif
+ gdk_rgb_find_color (gdk_rgb_get_colormap (), color);
}
return color;
@@ -389,6 +388,8 @@ bg_preferences_get_wptype_as_string (wallpaper_type_t wp)
return "embossed";
case WPTYPE_NONE:
return "none";
+ case WPTYPE_UNSET:
+ return NULL;
}
return NULL;