From 4a500f5614a9f238a144d05388dcb41b76f2c9f7 Mon Sep 17 00:00:00 2001 From: James Bursa Date: Fri, 21 May 2004 23:42:26 +0000 Subject: [PATCH] [project @ 2004-05-21 23:42:26 by bursa] Fix and clean code for radio and checkbox inputs. svn path=/import/netsurf/; revision=884 --- desktop/browser.c | 9 ++++----- render/box.c | 5 +---- render/form.c | 5 +++-- render/form.h | 7 +------ riscos/htmlredraw.c | 4 ++-- 5 files changed, 11 insertions(+), 19 deletions(-) diff --git a/desktop/browser.c b/desktop/browser.c index 9964b5363..94744a0b2 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -516,9 +516,8 @@ void clear_radio_gadgets(struct browser_window *bw, struct box *box, if (box->gadget->type == GADGET_RADIO && box->gadget->name != 0 && box->gadget != group) { if (strcmp(box->gadget->name, group->name) == 0) { - if (box->gadget->data.radio.selected) { - box->gadget->data.radio.selected = - 0; + if (box->gadget->selected) { + box->gadget->selected = false; gui_redraw_gadget(bw, box->gadget); } } @@ -641,12 +640,12 @@ int browser_window_gadget_click(struct browser_window* bw, unsigned long click_x gui_gadget_combo(bw, g, click_x, click_y); break; case GADGET_CHECKBOX: - g->data.checkbox.selected = !g->data.checkbox.selected; + g->selected = !g->selected; gui_redraw_gadget(bw, g); break; case GADGET_RADIO: clear_radio_gadgets(bw, click_boxes[i].content->data.html.layout->children, g); - g->data.radio.selected = -1; + g->selected = true; gui_redraw_gadget(bw, g); break; case GADGET_SUBMIT: diff --git a/render/box.c b/render/box.c index 656b9923f..d763ed8a1 100644 --- a/render/box.c +++ b/render/box.c @@ -1134,10 +1134,7 @@ struct box_result box_input(xmlNode *n, struct box_status *status, gadget->type = GADGET_CHECKBOX; if ((s = (char *) xmlGetProp(n, (const xmlChar *) "checked"))) { - if (gadget->type == GADGET_CHECKBOX) - gadget->data.checkbox.selected = -1; - else - gadget->data.radio.selected = -1; + gadget->selected = true; xmlFree(s); } diff --git a/render/form.c b/render/form.c index a9714b78d..6b1b247df 100644 --- a/render/form.c +++ b/render/form.c @@ -43,6 +43,7 @@ struct form_control *form_new_control(form_control_type type) control->disabled = false; control->form = 0; control->box = 0; + control->selected = false; control->prev = 0; control->next = 0; return control; @@ -124,9 +125,9 @@ struct form_successful_control *form_successful_controls(struct form *form, continue; /* ignore checkboxes and radio buttons which aren't selected */ - if (control->type == GADGET_CHECKBOX && !control->data.checkbox.selected) + if (control->type == GADGET_CHECKBOX && !control->selected) continue; - if (control->type == GADGET_RADIO && !control->data.radio.selected) + if (control->type == GADGET_RADIO && !control->selected) continue; /* select */ diff --git a/render/form.h b/render/form.h index 48801f9a9..2de0e38e5 100644 --- a/render/form.h +++ b/render/form.h @@ -60,6 +60,7 @@ struct form_control { struct box *caret_text_box; int caret_char_offset; unsigned int maxlength; + bool selected; union { struct { int mx, my; @@ -72,12 +73,6 @@ struct form_control { /** Currently selected item, if num_selected == 1. */ struct form_option *current; } select; - struct { - int selected; - } checkbox; - struct { - int selected; - } radio; } data; struct form_control *prev; /**< Previous control in this form */ struct form_control *next; /**< Next control in this form. */ diff --git a/riscos/htmlredraw.c b/riscos/htmlredraw.c index 6c61c0c94..934a3abf1 100644 --- a/riscos/htmlredraw.c +++ b/riscos/htmlredraw.c @@ -227,12 +227,12 @@ void html_redraw_box(struct content *content, struct box * box, } else if (box->gadget && box->gadget->type == GADGET_CHECKBOX) { html_redraw_checkbox(x + padding_left, y - padding_top, width, height, - box->gadget->data.checkbox.selected); + box->gadget->selected); } else if (box->gadget && box->gadget->type == GADGET_RADIO) { html_redraw_radio(x + padding_left, y - padding_top, width, height, - box->gadget->data.radio.selected); + box->gadget->selected); } else if (box->gadget && box->gadget->type == GADGET_FILE) { colourtrans_set_font_colours(box->font->handle,