diff --git a/ChangeLog b/ChangeLog
index e3bf67bc3a1f28accbb698420707f93cba1c257b..6a2bfffa01ea28d00faf6effdcbb6ca297ba4af2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-25	Benedikt Meurer <benny@xfce.org>
+
+	* thunar/thunar-enum-types.{c,h}: Import enum types required for the
+	  desktop background management.
+
 2006-01-24	Benedikt Meurer <benny@xfce.org>
 
 	* thunar/thunar-preferences.c(thunar_preferences_set_property): No need
diff --git a/thunar/thunar-enum-types.c b/thunar/thunar-enum-types.c
index 0ab419e0f2abe708fb1b3c0389496dcb77cb04aa..8236af49bdb459c81f15a48060e4f1562a29d8f4 100644
--- a/thunar/thunar-enum-types.c
+++ b/thunar/thunar-enum-types.c
@@ -27,33 +27,58 @@
 
 
 
-static void thunar_enum_from_string (const GValue *src_value,
-                                     GValue       *dst_value);
+static void   thunar_enum_from_string   (const GValue     *src_value,
+                                         GValue           *dst_value);
+static GType  thunar_enum_register_type (const gchar      *enum_name,
+                                         const GEnumValue *enum_values);
 
 
 
 GType
-thunar_recursive_permissions_get_type (void)
+thunar_color_style_get_type (void)
 {
-  static GType type = G_TYPE_INVALID;
+  static const GEnumValue values[] =
+  {
+    { THUNAR_COLOR_STYLE_SOLID,     "THUNAR_COLOR_STYLE_SOLID",     "solid",     },
+    { THUNAR_COLOR_STYLE_HGRADIENT, "THUNAR_COLOR_STYLE_HGRADIENT", "hgradient", },
+    { THUNAR_COLOR_STYLE_VGRADIENT, "THUNAR_COLOR_STYLE_VGRADIENT", "vgradient", },
+    { 0,                            NULL,                           NULL,        },
+  };
+
+  return thunar_enum_register_type (I_("ThunarColorStyle"), values);
+}
 
-  if (G_UNLIKELY (type == G_TYPE_INVALID))
-    {
-      static const GEnumValue values[] =
-      {
-        { THUNAR_RECURSIVE_PERMISSIONS_ASK,    "THUNAR_RECURSIVE_PERMISSIONS_ASK",    "ask",    },
-        { THUNAR_RECURSIVE_PERMISSIONS_ALWAYS, "THUNAR_RECURSIVE_PERMISSIONS_ALWAYS", "always", },
-        { THUNAR_RECURSIVE_PERMISSIONS_NEVER,  "THUNAR_RECURSIVE_PERMISSIONS_NEVER",  "never",  },
-        { 0,                                   NULL,                                  NULL,     },
-      };
 
-      type = g_enum_register_static (I_("ThunarRecursivePermissions"), values);
 
-      /* register transformation function for string->ThunarRecursivePermissions */
-      g_value_register_transform_func (G_TYPE_STRING, type, thunar_enum_from_string);
-    }
+GType
+thunar_recursive_permissions_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { THUNAR_RECURSIVE_PERMISSIONS_ASK,    "THUNAR_RECURSIVE_PERMISSIONS_ASK",    "ask",    },
+    { THUNAR_RECURSIVE_PERMISSIONS_ALWAYS, "THUNAR_RECURSIVE_PERMISSIONS_ALWAYS", "always", },
+    { THUNAR_RECURSIVE_PERMISSIONS_NEVER,  "THUNAR_RECURSIVE_PERMISSIONS_NEVER",  "never",  },
+    { 0,                                   NULL,                                  NULL,     },
+  };
+
+  return thunar_enum_register_type (I_("ThunarRecursivePermissions"), values);
+}
 
-  return type;
+
+
+GType
+thunar_wallpaper_style_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { THUNAR_WALLPAPER_STYLE_CENTERED,  "THUNAR_WALLPAPER_STYLE_CENTERED",  "centered",  },
+    { THUNAR_WALLPAPER_STYLE_SCALED,    "THUNAR_WALLPAPER_STYLE_SCALED",    "scaled",    },
+    { THUNAR_WALLPAPER_STYLE_STRETCHED, "THUNAR_WALLPAPER_STYLE_STRETCHED", "stretched", },
+    { THUNAR_WALLPAPER_STYLE_TILED,     "THUNAR_WALLPAPER_STYLE_TILED",     "tiled",     },
+    { 0,                                NULL,                               NULL,        },
+  };
+
+  return thunar_enum_register_type (I_("ThunarWallpaperStyle"), values);
 }
 
 
@@ -82,3 +107,23 @@ thunar_enum_from_string (const GValue *src_value,
 
 
 
+static GType
+thunar_enum_register_type (const gchar      *enum_name,
+                           const GEnumValue *enum_values)
+{
+  GType type;
+
+  /* check if we already have the type */
+  type = g_type_from_name (enum_name);
+  if (G_UNLIKELY (type == G_TYPE_INVALID))
+    {
+      /* register the type using the specified enum values */
+      type = g_enum_register_static (enum_name, enum_values);
+
+      /* register transformation function, that transforms strings to the enum type */
+      g_value_register_transform_func (G_TYPE_STRING, type, thunar_enum_from_string);
+    }
+
+  return type;
+}
+
diff --git a/thunar/thunar-enum-types.h b/thunar/thunar-enum-types.h
index 2e94991f8a6be97c18a0557335535eb81321cb09..e119a172d1aabb360a7e9f30c7932412545960b3 100644
--- a/thunar/thunar-enum-types.h
+++ b/thunar/thunar-enum-types.h
@@ -24,6 +24,26 @@
 
 G_BEGIN_DECLS;
 
+#define THUNAR_TYPE_COLOR_STYLE (thunar_color_style_get_type ())
+
+/**
+ * ThunarColorStyle:
+ * @THUNAR_COLOR_STYLE_SOLID      : solid desktop background color.
+ * @THUNAR_COLOR_STYLE_HGRADIENT  : horizontal gradient from color0 to color1.
+ * @THUNAR_COLOR_STYLE_VGRADIENT  : vertical gradient from color0 to color1.
+ *
+ * Desktop background color style.
+ **/
+typedef enum
+{
+  THUNAR_COLOR_STYLE_SOLID,
+  THUNAR_COLOR_STYLE_HGRADIENT,
+  THUNAR_COLOR_STYLE_VGRADIENT,
+} ThunarColorStyle;
+
+GType thunar_color_style_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+
 #define THUNAR_TYPE_RECURSIVE_PERMISSIONS (thunar_recursive_permissions_get_type ())
 
 /**
@@ -43,6 +63,28 @@ typedef enum
 
 GType thunar_recursive_permissions_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
 
+
+#define THUNAR_TYPE_WALLPAPER_STYLE (thunar_wallpaper_style_get_type ())
+
+/**
+ * ThunarWallpaperStyle:
+ * @THUNAR_WALLPAPER_STYLE_CENTERED   : center the wallpaper.
+ * @THUNAR_WALLPAPER_STYLE_SCALED     : scale the wallpaper.
+ * @THUNAR_WALLPAPER_STYLE_STRETCHED  : stretch the wallpaper.
+ * @THUNAR_WALLPAPER_STYLE_TILED      : tile the wallpaper.
+ *
+ * Desktop background wallpaper style.
+ **/
+typedef enum
+{
+  THUNAR_WALLPAPER_STYLE_CENTERED,
+  THUNAR_WALLPAPER_STYLE_SCALED,
+  THUNAR_WALLPAPER_STYLE_STRETCHED,
+  THUNAR_WALLPAPER_STYLE_TILED,
+} ThunarWallpaperStyle;
+
+GType thunar_wallpaper_style_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
 G_END_DECLS;
 
 #endif /* !__THUNAR_ENUM_TYPES_H__ */