diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-07-05 15:57:53 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-07-05 15:57:53 +0200 |
commit | 3a922c3c1acd08bc59ffec419aa555cbecb1f3da (patch) | |
tree | 87abb9ea4425850243dfe3970d00ba14a16cca36 /common.c | |
parent | 34c1df5171a911ae1ffcaa7a796204eab2573359 (diff) | |
download | xK-3a922c3c1acd08bc59ffec419aa555cbecb1f3da.tar.gz xK-3a922c3c1acd08bc59ffec419aa555cbecb1f3da.tar.xz xK-3a922c3c1acd08bc59ffec419aa555cbecb1f3da.zip |
degesch: start using "on_change" notifications
Terminal attributes can be changed on the fly now.
Diffstat (limited to 'common.c')
-rw-r--r-- | common.c | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -1911,8 +1911,6 @@ config_schema_initialize_item (struct config_schema *schema, item->schema = schema; item->user_data = user_data; - if (schema->on_change) - schema->on_change (item); } static void @@ -1924,6 +1922,22 @@ config_schema_apply_to_object (struct config_schema *schema_array, config_schema_initialize_item (schema_array++, object, user_data); } +static void +config_schema_call_changed (struct config_item_ *item) +{ + if (item->type == CONFIG_ITEM_OBJECT) + { + struct str_map_iter iter; + str_map_iter_init (&iter, &item->value.object); + + struct config_item_ *child; + while ((child = str_map_iter_next (&iter))) + config_schema_call_changed (child); + } + else if (item->schema && item->schema->on_change) + item->schema->on_change (item); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // XXX: this doesn't necessarily have to be well designed at all |