diff options
author | Mark McLoughlin <mark@skynet.ie> | 2002-11-08 03:26:33 +0000 |
---|---|---|
committer | Mark McLoughlin <markmc@src.gnome.org> | 2002-11-08 03:26:33 +0000 |
commit | a43af53a3f2ed7cb1dd6f8158443ea162abb6036 (patch) | |
tree | d35f353b4b7f2b7f7f3545ee6c4ecf29805a811c /gnome-settings-daemon/gnome-settings-xsettings.c | |
parent | eea6c7e6c19a28b189bce6b33fb2ec3a5c59a05a (diff) | |
download | gnome-control-center-a43af53a3f2ed7cb1dd6f8158443ea162abb6036.tar.gz |
Create a XSettingsManager for every available screen and apply settings
2002-11-08 Mark McLoughlin <mark@skynet.ie>
Create a XSettingsManager for every available
screen and apply settings changes to each.
* gnome-settings-daemon.c:
(manager_event_filter): make this a per-window filter
and ask the appropriate xsettings manager to filter
the event.
(finalize): dispose of every manager.
(gnome_settings_daemon_new): create a settings manager
for each screen.
* gnome-settings-xsettings.c:
(translate_bool_int), (translate_int_int),
(translate_string_string), (process_value),
(xsettings_callback), (xft_callback),
(gnome_xft_settings_set_xsettings),
(gnome_settings_xsettings_load): apply settings to
every available settings manager.
Diffstat (limited to 'gnome-settings-daemon/gnome-settings-xsettings.c')
-rw-r--r-- | gnome-settings-daemon/gnome-settings-xsettings.c | 60 |
1 files changed, 41 insertions, 19 deletions
diff --git a/gnome-settings-daemon/gnome-settings-xsettings.c b/gnome-settings-daemon/gnome-settings-xsettings.c index ebc18369c..17b971c5d 100644 --- a/gnome-settings-daemon/gnome-settings-xsettings.c +++ b/gnome-settings-daemon/gnome-settings-xsettings.c @@ -13,7 +13,7 @@ #include "gnome-settings-xsettings.h" #include "xsettings-manager.h" -extern XSettingsManager *manager; +extern XSettingsManager **managers; #ifdef HAVE_XFT2 #define FONT_RENDER_DIR "/desktop/gnome/font_rendering" @@ -44,31 +44,40 @@ static void translate_bool_int (TranslationEntry *trans, GConfValue *value) { + int i; + g_assert (value->type == trans->gconf_type); - xsettings_manager_set_int (manager, trans->xsetting_name, - gconf_value_get_bool (value)); + for (i = 0; managers [i]; i++) + xsettings_manager_set_int (managers [i], trans->xsetting_name, + gconf_value_get_bool (value)); } static void translate_int_int (TranslationEntry *trans, GConfValue *value) { + int i; + g_assert (value->type == trans->gconf_type); - - xsettings_manager_set_int (manager, trans->xsetting_name, - gconf_value_get_int (value)); + + for (i = 0; managers [i]; i++) + xsettings_manager_set_int (managers [i], trans->xsetting_name, + gconf_value_get_int (value)); } static void translate_string_string (TranslationEntry *trans, GConfValue *value) { + int i; + g_assert (value->type == trans->gconf_type); - xsettings_manager_set_string (manager, - trans->xsetting_name, - gconf_value_get_string (value)); + for (i = 0; managers [i]; i++) + xsettings_manager_set_string (managers [i], + trans->xsetting_name, + gconf_value_get_string (value)); } static TranslationEntry translations [] = { @@ -159,7 +168,10 @@ process_value (TranslationEntry *trans, { if (val == NULL) { - xsettings_manager_delete_setting (manager, trans->xsetting_name); + int i; + + for (i = 0; managers [i]; i++) + xsettings_manager_delete_setting (managers [i], trans->xsetting_name); } else { @@ -181,14 +193,16 @@ static void xsettings_callback (GConfEntry *entry) { TranslationEntry *trans; - trans = find_translation_entry (entry->key); + int i; + trans = find_translation_entry (entry->key); if (trans == NULL) return; process_value (trans, entry->value); - xsettings_manager_notify (manager); + for (i = 0; managers [i]; i++) + xsettings_manager_notify (managers [i]); } void @@ -208,11 +222,14 @@ static void xft_callback (GConfEntry *entry) { GConfClient *client; + int i; client = gconf_client_get_default (); gnome_settings_update_xft (client); - xsettings_manager_notify (manager); + + for (i = 0; managers [i]; i++) + xsettings_manager_notify (managers [i]); } typedef struct @@ -320,11 +337,15 @@ gnome_xft_settings_get (GConfClient *client, static void gnome_xft_settings_set_xsettings (GnomeXftSettings *settings) { - xsettings_manager_set_int (manager, "Xft/Antialias", settings->antialias); - xsettings_manager_set_int (manager, "Xft/Hinting", settings->hinting); - xsettings_manager_set_string (manager, "Xft/HintStyle", settings->hintstyle); - xsettings_manager_set_int (manager, "Xft/DPI", settings->dpi); - xsettings_manager_set_string (manager, "Xft/RGBA", settings->rgba); + int i; + for (i = 0; managers [i]; i++) + { + xsettings_manager_set_int (managers [i], "Xft/Antialias", settings->antialias); + xsettings_manager_set_int (managers [i], "Xft/Hinting", settings->hinting); + xsettings_manager_set_string (managers [i], "Xft/HintStyle", settings->hintstyle); + xsettings_manager_set_int (managers [i], "Xft/DPI", settings->dpi); + xsettings_manager_set_string (managers [i], "Xft/RGBA", settings->rgba); + } } /* @@ -509,5 +530,6 @@ gnome_settings_xsettings_load (GConfClient *client) gnome_settings_update_xft (client); #endif /* HAVE_XFT */ - xsettings_manager_notify (manager); + for (i = 0; managers [i]; i++) + xsettings_manager_notify (managers [i]); } |