From f6e442534448ece862a288216efd259cc53b9596 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel <lkundrak@v3.sk> Date: Sat, 17 Oct 2009 14:06:51 +0200 Subject: [PATCH] Display Google correctly Do not display a TEXTAREA which has STYLE attribute that matches "display:.*none" even when we don't do CSS, so that Google looks nice. --- html.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/html.c b/html.c index b0f5918..26f6e99 100644 --- a/html.c +++ b/html.c @@ -2143,7 +2143,7 @@ void html_textarea(unsigned char *a) void do_html_textarea(unsigned char *attr, unsigned char *html, unsigned char *eof, unsigned char **end, void *f) { struct form_control *fc; - unsigned char *p, *t_name, *w; + unsigned char *p, *t_name, *w, *style; int t_namelen; int cols, rows; int i; @@ -2172,6 +2172,16 @@ void do_html_textarea(unsigned char *attr, unsigned char *html, unsigned char *e fc->type = FC_TEXTAREA;; fc->ro = has_attr(attr, "disabled") ? 2 : has_attr(attr, "readonly") ? 1 : 0; fc->default_value = memacpy(html, p - html); + + /* Half-assed way to hide textareas that have display CSS property set to none, + * even as we don't do CSS, so that we display Google nicely */ + style = get_attr_val(attr, "style"); + if (style) style = (unsigned char *)strcasestr(style, "display"); + if (style) style += strlen("display"); + while (style && *style && isblank(*style)) style++; + if (style && *style == ':') do { ++style; } while (style && *style && isblank(*style)); + if (style && style == (unsigned char *)strcasestr(style, "none")) goto hid; + if ((cols = get_num(attr, "cols")) <= 5) cols = HTML_DEFAULT_TEXTAREA_WIDTH; cols++; if ((rows = get_num(attr, "rows")) <= 0) rows = HTML_DEFAULT_TEXTAREA_HEIGHT; @@ -2212,6 +2222,8 @@ void do_html_textarea(unsigned char *attr, unsigned char *html, unsigned char *e kill_html_stack_item(&html_top); if (rows > 1) ln_break(1, line_break_f, f); else put_chrs(" ", 1, put_chars_f, f); + + hid: special_f(f, SP_CONTROL, fc); } -- 1.6.5.rc2