Tue, 17 Sep 2013 18:20:00 +0200
GTK Request: better html support
| libpurple/request.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkrequest.c | file | annotate | diff | comparison | revisions |
--- a/libpurple/request.c Tue Sep 17 14:06:44 2013 +0200 +++ b/libpurple/request.c Tue Sep 17 18:20:00 2013 +0200 @@ -2099,6 +2099,31 @@ cancel_cb ? 1 : 0, _("Cancel"), cancel_cb); } +static void +purple_request_fields_strip_html(PurpleRequestFields *fields) +{ + GList *itg; + + for (itg = fields->groups; itg != NULL; itg = g_list_next(itg)) { + PurpleRequestFieldGroup *group = itg->data; + GList *itf; + + for (itf = group->fields; itf != NULL; itf = g_list_next(itf)) { + PurpleRequestField *field = itf->data; + gchar *new_label; + + new_label = purple_request_strip_html_custom( + field->label); + if (g_strcmp0(new_label, field->label) == 0) { + g_free(new_label); + continue; + } + g_free(field->label); + field->label = new_label; + } + } +} + void * purple_request_fields(void *handle, const char *title, const char *primary, const char *secondary, PurpleRequestFields *fields, const char *ok_text, @@ -2120,6 +2145,12 @@ ops = purple_request_get_ui_ops(); + if (purple_request_cpar_is_html(cpar) && + !((ops->features & PURPLE_REQUEST_FEATURE_HTML))) + { + purple_request_fields_strip_html(fields); + } + if (ops != NULL && ops->request_fields != NULL) { PurpleRequestInfo *info; gchar **tmp;
--- a/pidgin/gtkrequest.c Tue Sep 17 14:06:44 2013 +0200 +++ b/pidgin/gtkrequest.c Tue Sep 17 18:20:00 2013 +0200 @@ -1068,12 +1068,16 @@ } static GtkWidget * -create_bool_field(PurpleRequestField *field) +create_bool_field(PurpleRequestField *field, + PurpleRequestCommonParameters *cpar) { GtkWidget *widget; + gchar *label; - widget = gtk_check_button_new_with_label( + label = pidgin_request_escape(cpar, purple_request_field_get_label(field)); + widget = gtk_check_button_new_with_label(label); + g_free(label); gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); @@ -1630,7 +1634,7 @@ size_t col_offset = col_num * 2; PurpleRequestFieldType type; GtkWidget *widget = NULL; - const char *field_label; + gchar *field_label; label = NULL; field = fl->data; @@ -1641,14 +1645,16 @@ } type = purple_request_field_get_type(field); - field_label = purple_request_field_get_label(field); + field_label = pidgin_request_escape(cpar, + purple_request_field_get_label(field)); if (type != PURPLE_REQUEST_FIELD_BOOLEAN && field_label) { char *text = NULL; if (field_label[strlen(field_label) - 1] != ':' && - field_label[strlen(field_label) - 1] != '?') + field_label[strlen(field_label) - 1] != '?' && + type != PURPLE_REQUEST_FIELD_LABEL) { text = g_strdup_printf("%s:", field_label); } @@ -1684,6 +1690,7 @@ } gtk_widget_show(label); + g_free(field_label); } widget = GTK_WIDGET(purple_request_field_get_ui_data(field)); @@ -1694,7 +1701,7 @@ else if (type == PURPLE_REQUEST_FIELD_INTEGER) widget = create_int_field(field); else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) - widget = create_bool_field(field); + widget = create_bool_field(field, cpar); else if (type == PURPLE_REQUEST_FIELD_CHOICE) widget = create_choice_field(field, cpar); else if (type == PURPLE_REQUEST_FIELD_LIST)