$OpenBSD: patch-common_panel-xfconf_c,v 1.1 2011/02/09 07:55:15 landry Exp $
http://git.xfce.org/xfce/xfce4-panel/patch/?id=8b0c024c435b2cab825ceb2661e2589145e3b5ee
Fix for #7117
--- common/panel-xfconf.c.orig	Sun Jan 16 17:02:41 2011
+++ common/panel-xfconf.c	Tue Feb  8 21:43:57 2011
@@ -36,6 +36,8 @@ panel_properties_store_value (XfconfChannel *channel,
                               const gchar   *object_property)
 {
   GValue      value = { 0, };
+  GdkColor   *color;
+  guint16     alpha = 0xffff;
 #ifndef NDEBUG
   GParamSpec *pspec;
 #endif
@@ -53,7 +55,24 @@ panel_properties_store_value (XfconfChannel *channel,
   /* write the property to the xfconf channel */
   g_value_init (&value, xfconf_property_type);
   g_object_get_property (G_OBJECT (object), object_property, &value);
-  xfconf_channel_set_property (channel, xfconf_property, &value);
+
+  if (G_LIKELY (xfconf_property_type != GDK_TYPE_COLOR))
+    {
+      xfconf_channel_set_property (channel, xfconf_property, &value);
+    }
+  else
+    {
+      /* work around xfconf's lack of storing colors (bug #7117) and
+       * do the same as xfconf_g_property_bind_gdkcolor() does */
+      color = g_value_get_boxed (&value);
+      xfconf_channel_set_array (channel, xfconf_property,
+                                XFCONF_TYPE_UINT16, &color->red,
+                                XFCONF_TYPE_UINT16, &color->green,
+                                XFCONF_TYPE_UINT16, &color->blue,
+                                XFCONF_TYPE_UINT16, &alpha,
+                                G_TYPE_INVALID);
+    }
+
   g_value_unset (&value);
 }
 
