X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Ffe-common%2Fcore%2Fwindows-layout.c;h=a19b2942485661324203a783f456ce52d8827e1d;hb=9601176a506c8a545a954891e5e25552e9609159;hp=5d53f1ae177204fe3396bb5a5e4f0fefdbc49e69;hpb=8efe5c6b18756ea335788ebf0afdf294764f4c26;p=runtime.git diff --git a/apps/irssi/src/fe-common/core/windows-layout.c b/apps/irssi/src/fe-common/core/windows-layout.c index 5d53f1ae..a19b2942 100644 --- a/apps/irssi/src/fe-common/core/windows-layout.c +++ b/apps/irssi/src/fe-common/core/windows-layout.c @@ -132,36 +132,39 @@ static void sig_layout_restore(void) } } -static void window_save_items(WINDOW_REC *window, CONFIG_NODE *node) +static void sig_layout_save_item(WINDOW_REC *window, WI_ITEM_REC *item, + CONFIG_NODE *node) { CONFIG_NODE *subnode; - GSList *tmp; const char *type; - node = config_node_section(node, "items", NODE_TYPE_LIST); - for (tmp = window->items; tmp != NULL; tmp = tmp->next) { - WI_ITEM_REC *rec = tmp->data; - SERVER_REC *server = rec->server; - - type = module_find_id_str("WINDOW ITEM TYPE", rec->type); - if (type == NULL) continue; + type = module_find_id_str("WINDOW ITEM TYPE", item->type); + if (type == NULL) + return; - subnode = config_node_section(node, NULL, NODE_TYPE_BLOCK); + subnode = config_node_section(node, NULL, NODE_TYPE_BLOCK); - iconfig_node_set_str(subnode, "type", type); - type = chat_protocol_find_id(rec->chat_type)->name; - iconfig_node_set_str(subnode, "chat_type", type); - iconfig_node_set_str(subnode, "name", rec->name); + iconfig_node_set_str(subnode, "type", type); + type = chat_protocol_find_id(item->chat_type)->name; + iconfig_node_set_str(subnode, "chat_type", type); + iconfig_node_set_str(subnode, "name", item->name); - if (server != NULL) - iconfig_node_set_str(subnode, "tag", server->tag); - else if (IS_QUERY(rec)) { - iconfig_node_set_str(subnode, "tag", - QUERY(rec)->server_tag); - } + if (item->server != NULL) + iconfig_node_set_str(subnode, "tag", item->server->tag); + else if (IS_QUERY(item)) { + iconfig_node_set_str(subnode, "tag", QUERY(item)->server_tag); } } +static void window_save_items(WINDOW_REC *window, CONFIG_NODE *node) +{ + GSList *tmp; + + node = config_node_section(node, "items", NODE_TYPE_LIST); + for (tmp = window->items; tmp != NULL; tmp = tmp->next) + signal_emit("layout save item", 3, window, tmp->data, node); +} + static void window_save(WINDOW_REC *window, CONFIG_NODE *node) { char refnum[MAX_INT_STRLEN]; @@ -224,10 +227,12 @@ void windows_layout_init(void) { signal_add("layout restore item", (SIGNAL_FUNC) sig_layout_restore_item); signal_add("layout restore", (SIGNAL_FUNC) sig_layout_restore); + signal_add("layout save item", (SIGNAL_FUNC) sig_layout_save_item); } void windows_layout_deinit(void) { signal_remove("layout restore item", (SIGNAL_FUNC) sig_layout_restore_item); signal_remove("layout restore", (SIGNAL_FUNC) sig_layout_restore); + signal_remove("layout save item", (SIGNAL_FUNC) sig_layout_save_item); }