--- a/libpurple/request.c Mon Oct 28 16:01:41 2013 +0100 +++ b/libpurple/request.c Tue Oct 29 19:01:56 2013 +0100 @@ -132,6 +132,10 @@ PurpleCertificate *cert; } certificate; + struct + { + PurpleRequestDatasheet *sheet; + } datasheet; } u; void *ui_data; @@ -985,6 +989,10 @@ g_hash_table_destroy(field->u.list.item_data); g_hash_table_destroy(field->u.list.selected_table); } + else if (field->type == PURPLE_REQUEST_FIELD_DATASHEET) + { + purple_request_datasheet_free(field->u.datasheet.sheet); + } g_free(field); } @@ -1972,6 +1980,31 @@ return field->u.certificate.cert; } +PurpleRequestField * +purple_request_field_datasheet_new(const char *id, + const gchar *text, PurpleRequestDatasheet *sheet) +{ + PurpleRequestField *field; + + g_return_val_if_fail(id != NULL, NULL); + g_return_val_if_fail(sheet != NULL, NULL); + + field = purple_request_field_new(id, text, PURPLE_REQUEST_FIELD_DATASHEET); + + field->u.datasheet.sheet = sheet; + + return field; +} + +PurpleRequestDatasheet * +purple_request_field_datasheet_get_sheet(PurpleRequestField *field) +{ + g_return_val_if_fail(field != NULL, NULL); + g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_DATASHEET, NULL); + + return field->u.datasheet.sheet; +} + /* -- */ gboolean