diff --git a/settings-backend/gconf.c b/settings-backend/gconf.c
index cacee87..9078d9d 100644
--- a/settings-backend/gconf.c
+++ b/settings-backend/gconf.c
@@ -1159,6 +1159,12 @@ readIntegratedOption (CCSContext *context,
case OptionKey:
{
char *value;
+
+ /* read Compiz option value to get the correct button and edge
+ bindings */
+ readOption (setting);
+
+ /* now get the key part from the corresponding metacity value */
value = gconf_client_get_string (client,
specialOptions[index].gnomeName,
&err);
@@ -1244,6 +1250,9 @@ readIntegratedOption (CCSContext *context,
char *value;
const char *name;
+ /* read compiz option to get key and edge option */
+ readOption (setting);
+
name = specialOptions[index].gnomeName;
value = gconf_client_get_string (client, name, &err);
@@ -1704,6 +1713,10 @@ writeIntegratedOption (CCSContext *context,
char *newValue;
gchar *currentValue;
+ /* save the option also to its original path as button and edge
+ need to be saved, too */
+ writeOption (setting);
+
newValue = ccsKeyBindingToString (&setting->value->value.asAction);
if (newValue && !strlen (newValue))
{
@@ -1789,6 +1802,9 @@ writeIntegratedOption (CCSContext *context,
gchar *currentValue;
unsigned int modMask;
+ /* write to Compiz path to set the non-integrated parts */
+ writeOption (setting);
+
modMask = setting->value->value.asAction.buttonModMask;
newValue =
ccsKeyBindingToString (&setting->value->value.asAction);