static void ccpSetContextFromOption (CompObject *object, CompOption *o, const char *plugin) { CCP_CORE (&core); CCSPlugin *bsp; CCSSetting *setting; Bool screen = (object->type == COMP_OBJECT_TYPE_SCREEN); int screenNum = 0; /* we currently only support screen and display opton types */ if (object->type != COMP_OBJECT_TYPE_SCREEN && object->type != COMP_OBJECT_TYPE_DISPLAY) return; if (screen) { char *name = compObjectName (object); if (name) { screenNum = atoi (name); free (name); } } bsp = ccsFindPlugin (cc->context, (plugin) ? plugin : CORE_VTABLE_NAME); if (!bsp) return; setting = ccsFindSetting (bsp, o->name, screen, screenNum); if (!setting) return; if (!ccpTypeCheck (setting, o)) return; ccpValueToSetting (object, setting, &o->value); ccsWriteChangedSettings (cc->context); }
static void ccsGNOMEIntegrationBackendUpdateIntegratedSettings (CCSIntegration *integration, CCSContext *context, CCSIntegratedSettingList integratedSettings) { CCGNOMEIntegrationBackendPrivate *priv = (CCGNOMEIntegrationBackendPrivate *) ccsObjectGetPrivate (integration); Bool needInit = TRUE; CCSIntegratedSettingList iter = integratedSettings; while (iter) { CCSIntegratedSetting *integrated = iter->data; const char *settingName = ccsIntegratedSettingInfoSettingName ((CCSIntegratedSettingInfo *)integrated); const char *pluginName = ccsIntegratedSettingInfoPluginName ((CCSIntegratedSettingInfo *) integrated); /* Special case for mouse button modifier etc */ if ((strcmp (settingName, "mouse_button_modifier") == 0) || (strcmp (settingName, "resize_with_right_button") == 0)) { CCSSetting *s; if (needInit) { ccsBackendReadInit (priv->backend, priv->context); needInit = FALSE; } s = findDisplaySettingForPlugin (priv->context, "core", "window_menu_button"); if (s) ccsBackendReadSetting (priv->backend, priv->context, s); s = findDisplaySettingForPlugin (priv->context, "move", "initiate_button"); if (s) ccsBackendReadSetting (priv->backend, priv->context, s); s = findDisplaySettingForPlugin (priv->context, "resize", "initiate_button"); if (s) ccsBackendReadSetting (priv->backend, priv->context, s); } else { CCSPlugin *plugin = NULL; plugin = ccsFindPlugin (priv->context, pluginName); if (plugin) { CCSSetting *setting; setting = ccsFindSetting (plugin, settingName); if (setting) { if (needInit) { ccsBackendReadInit (priv->backend, priv->context); needInit = FALSE; } ccsBackendReadSetting (priv->backend, priv->context, setting); } } } iter = iter->next; } }