summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/browser.c9
-rw-r--r--render/box.c5
-rw-r--r--render/form.c5
-rw-r--r--render/form.h7
-rw-r--r--riscos/htmlredraw.c4
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,