Query bugfixes

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1048 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2001-01-01 19:29:05 +00:00 committed by cras
commit ebeb48d307
2 changed files with 15 additions and 7 deletions

View file

@ -47,15 +47,16 @@ void query_init(QUERY_REC *query, int automatic)
g_return_if_fail(query->name != NULL); g_return_if_fail(query->name != NULL);
queries = g_slist_append(queries, query); queries = g_slist_append(queries, query);
if (query->server != NULL) {
query->server->queries =
g_slist_append(query->server->queries, query);
}
MODULE_DATA_INIT(query); MODULE_DATA_INIT(query);
query->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "QUERY"); query->type = module_get_uniq_id_str("WINDOW ITEM TYPE", "QUERY");
if (query->server_tag != NULL) if (query->server_tag != NULL) {
query->server = server_find_tag(query->server_tag); query->server = server_find_tag(query->server_tag);
if (query->server != NULL) {
query->server->queries =
g_slist_append(query->server->queries, query);
}
}
signal_emit("query created", 2, query, GINT_TO_POINTER(automatic)); signal_emit("query created", 2, query, GINT_TO_POINTER(automatic));
} }
@ -141,6 +142,13 @@ void query_change_server(QUERY_REC *query, SERVER_REC *server)
{ {
g_return_if_fail(IS_QUERY(query)); g_return_if_fail(IS_QUERY(query));
if (query->server != NULL) {
query->server->queries =
g_slist_remove(query->server->queries, query);
}
if (server != NULL)
server->queries = g_slist_append(server->queries, query);
query->server = server; query->server = server;
signal_emit("query server changed", 1, query); signal_emit("query server changed", 1, query);
} }

View file

@ -302,8 +302,8 @@ static int server_remove_channels(SERVER_REC *server)
found = TRUE; found = TRUE;
} }
for (tmp = server->queries; tmp != NULL; tmp = tmp->next) while (server->queries != NULL)
query_change_server(tmp->data, NULL); query_change_server(server->queries->data, NULL);
g_slist_free(server->channels); g_slist_free(server->channels);
g_slist_free(server->queries); g_slist_free(server->queries);