--- a/libpurple/request.c Sat Sep 21 12:26:23 2013 +0200 +++ b/libpurple/request.c Sat Sep 21 14:47:08 2013 +0200 @@ -175,6 +175,8 @@ gpointer help_data; GSList *extra_actions; + + gpointer parent_from; }; PurpleRequestCommonParameters * @@ -424,6 +426,24 @@ return cpar->extra_actions; } +void +purple_request_cpar_set_parent_from(PurpleRequestCommonParameters *cpar, + gpointer ui_handle) +{ + g_return_if_fail(cpar != NULL); + + cpar->parent_from = ui_handle; +} + +gpointer +purple_request_cpar_get_parent_from(PurpleRequestCommonParameters *cpar) +{ + if (cpar == NULL) + return NULL; + + return cpar->parent_from; +} + PurpleRequestFields * purple_request_fields_new(void) { @@ -2286,6 +2306,28 @@ NULL, user_data); } +gboolean +purple_request_is_valid_ui_handle(void *ui_handle, PurpleRequestType *type) +{ + GList *it; + + if (ui_handle == NULL) + return FALSE; + + for (it = handles; it != NULL; it = g_list_next(it)) { + PurpleRequestInfo *info = it->data; + + if (info->ui_handle != ui_handle) + continue; + + if (type != NULL) + *type = info->type; + return TRUE; + } + + return FALSE; +} + static void purple_request_close_info(PurpleRequestInfo *info) {