Settings are specified by

  document.colors.form
  document.colors.use_form_color

The latter setting determines whether the color is used when document
colors are being used.
---
 src/config/options.inc           |    9 +++++++++
 src/document/html/parser.c       |    1 +
 src/document/html/parser.h       |    1 +
 src/document/html/parser/forms.c |   18 ++++++++++++++++++
 src/document/options.c           |    2 ++
 src/document/options.h           |    2 ++
 6 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/src/config/options.inc b/src/config/options.inc
index 323e987..340ab93 100644
--- a/src/config/options.inc
+++ b/src/config/options.inc
@@ -615,6 +615,15 @@ static struct option_info config_options_info[] = {
                "link_number", 0, "#0000ff",
                N_("Default link number color.")),
 
+       INIT_OPT_BOOL("document.colors", N_("Use form color"),
+               "use_form_color", 0, 0,
+               N_("Whether to use form color even colors specified by "
+               "the document are used.")),
+
+       INIT_OPT_COLOR("document.colors", N_("Form color"),
+               "form", 0, "#000000",
+               N_("Default form color.")),
+
        /* Compatibility alias: added by jonas at 2005-05-31, 0.11.CVS. */
        INIT_OPT_ALIAS("document.colors", "allow_dark_on_black", 
OPT_ALIAS_NEGATE,
                "document.colors.increase_contrast"),
diff --git a/src/document/html/parser.c b/src/document/html/parser.c
index 65e54dd..f3305db 100644
--- a/src/document/html/parser.c
+++ b/src/document/html/parser.c
@@ -924,6 +924,7 @@ init_html_parser(struct uri *uri, struct document_options 
*options,
 #endif
        format.color.image_link = options->default_color.image_link;
        format.color.link_number = options->default_color.link_number;
+       format.color.form = options->default_color.form;
 
        par_format.align = ALIGN_LEFT;
        par_format.leftmargin = options->margin;
diff --git a/src/document/html/parser.h b/src/document/html/parser.h
index 7e61619..b28303a 100644
--- a/src/document/html/parser.h
+++ b/src/document/html/parser.h
@@ -31,6 +31,7 @@ struct text_attrib_color {
 #endif
        color_T image_link;
        color_T link_number;
+       color_T form;
 };
 
 struct text_attrib {
diff --git a/src/document/html/parser/forms.c b/src/document/html/parser/forms.c
index 5f9dc47..68ec8d7 100644
--- a/src/document/html/parser/forms.c
+++ b/src/document/html/parser/forms.c
@@ -185,6 +185,8 @@ no_type_attr:
        html_context->special_f(html_context, SP_CONTROL, fc);
        format.form = fc;
        format.style.attr |= AT_BOLD;
+       if (html_context->options->use_form_color)
+               format.style.color.foreground = format.color.form;
 }
 
 static void
@@ -205,16 +207,22 @@ html_input_format(struct html_context *html_context, 
unsigned char *a,
                        int i;
 
                        format.style.attr |= AT_BOLD;
+                       if (html_context->options->use_form_color)
+                               format.style.color.foreground = 
format.color.form;
                        for (i = 0; i < fc->size; i++)
                                put_chrs(html_context, "_", 1);
                        break;
                }
                case FC_CHECKBOX:
                        format.style.attr |= AT_BOLD;
+                       if (html_context->options->use_form_color)
+                               format.style.color.foreground = 
format.color.form;
                        put_chrs(html_context, "[&nbsp;]", 8);
                        break;
                case FC_RADIO:
                        format.style.attr |= AT_BOLD;
+                       if (html_context->options->use_form_color)
+                               format.style.color.foreground = 
format.color.form;
                        put_chrs(html_context, "(&nbsp;)", 8);
                        break;
                case FC_IMAGE:
@@ -231,6 +239,8 @@ html_input_format(struct html_context *html_context, 
unsigned char *a,
                                mem_free(al);
                        }
                        format.style.attr |= AT_BOLD;
+                       if (html_context->options->use_form_color)
+                               format.style.color.foreground = 
format.color.form;
                        put_chrs(html_context, "[&nbsp;", 7);
                        if (fc->alt)
                                put_chrs(html_context, fc->alt, 
strlen(fc->alt));
@@ -246,6 +256,8 @@ html_input_format(struct html_context *html_context, 
unsigned char *a,
                case FC_RESET:
                case FC_BUTTON:
                        format.style.attr |= AT_BOLD;
+                       if (html_context->options->use_form_color)
+                               format.style.color.foreground = 
format.color.form;
                        put_chrs(html_context, "[&nbsp;", 7);
                        if (fc->default_value)
                                put_chrs(html_context, fc->default_value, 
strlen(fc->default_value));
@@ -493,6 +505,8 @@ end_parse:
        html_stack_dup(html_context, ELEMENT_KILLABLE);
        format.form = fc;
        format.style.attr |= AT_BOLD;
+       if (html_context->options->use_form_color)
+               format.style.color.foreground = format.color.form;
 
        max_width = 0;
        for (i = 0; i < order; i++) {
@@ -614,6 +628,8 @@ end_parse:
        html_stack_dup(html_context, ELEMENT_KILLABLE);
        format.form = fc;
        format.style.attr |= AT_BOLD;
+       if (html_context->options->use_form_color)
+               format.style.color.foreground = format.color.form;
        put_chrs(html_context, "[ ]", 3);
        pop_html_element(html_context);
        put_chrs(html_context, " ", 1);
@@ -714,6 +730,8 @@ pp:
        html_stack_dup(html_context, ELEMENT_KILLABLE);
        format.form = fc;
        format.style.attr |= AT_BOLD;
+       if (html_context->options->use_form_color)
+               format.style.color.foreground = format.color.form;
 
        for (i = 0; i < rows; i++) {
                int j;
diff --git a/src/document/options.c b/src/document/options.c
index dabacb2..b681fda 100644
--- a/src/document/options.c
+++ b/src/document/options.c
@@ -47,6 +47,8 @@ init_document_options(struct session *ses, struct 
document_options *doo)
        doo->default_color.image_link = get_opt_color("document.colors.image", 
ses);
        doo->default_color.link_number = 
get_opt_color("document.colors.link_number", ses);
        doo->use_link_number_color = doo->use_document_colors == 0 || 
get_opt_bool("document.colors.use_link_number_color", ses);
+       doo->default_color.form = get_opt_color("document.colors.form", ses);
+       doo->use_form_color = doo->use_document_colors == 0 || 
get_opt_bool("document.colors.use_form_color", ses);
 
        doo->active_link.color.foreground = 
get_opt_color("document.browse.links.active_link.colors.text", ses);
        doo->active_link.color.background = 
get_opt_color("document.browse.links.active_link.colors.background", ses);
diff --git a/src/document/options.h b/src/document/options.h
index 33a7570..d3bd29a 100644
--- a/src/document/options.h
+++ b/src/document/options.h
@@ -33,6 +33,7 @@ struct document_options_colors {
 #endif
        color_T image_link;
        color_T link_number;
+       color_T form;
 };
 
 struct document_options_image_link {
@@ -64,6 +65,7 @@ struct document_options {
        /** @} */
 
        unsigned int use_link_number_color:1;
+       unsigned int use_form_color:1;
 
        /** Color model/optimizations */
        enum color_flags color_flags;
-- 
1.6.3

_______________________________________________
elinks-dev mailing list
elinks-dev@linuxfromscratch.org
http://linuxfromscratch.org/mailman/listinfo/elinks-dev

Reply via email to