summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2020-02-23 20:23:00 +0000
committerMichael Drake <michael.drake@codethink.co.uk>2020-02-23 20:23:00 +0000
commitbe659af7e563527270a8725ae42ecf7c25aecc7e (patch)
treeb1cf24b94b463f548e5ef6871d15cfb0f41a001c
parent9062ae3c7073ea354e688755b407bb91ac0e8ade (diff)
downloadnetsurf-be659af7e563527270a8725ae42ecf7c25aecc7e.tar.gz
netsurf-be659af7e563527270a8725ae42ecf7c25aecc7e.tar.bz2
Page info: Avoid anonymous union for AmigaOS3 and OpenBSD.
-rw-r--r--desktop/page-info.c127
1 files changed, 67 insertions, 60 deletions
diff --git a/desktop/page-info.c b/desktop/page-info.c
index 51784c4b9..fba0d6352 100644
--- a/desktop/page-info.c
+++ b/desktop/page-info.c
@@ -183,7 +183,7 @@ struct page_info_entry {
union {
struct page_info_text text;
struct page_info_item item;
- };
+ } u;
};
/**
@@ -195,32 +195,38 @@ struct page_info_entry pi__entries[PI_ENTRY__COUNT] = {
},
[PI_ENTRY_DOMAIN] = {
.type = PAGE_INFO_ENTRY_TYPE_TEXT,
- .text = {
- .style = &pi__domain,
+ .u = {
+ .text = {
+ .style = &pi__domain,
+ },
},
},
[PI_ENTRY_CERT] = {
.type = PAGE_INFO_ENTRY_TYPE_ITEM,
- .item = {
+ .u = {
.item = {
- .style = &pi__item,
+ .item = {
+ .style = &pi__item,
+ },
+ .detail = {
+ .style = &pi__item_detail,
+ },
+ .hover_bg = &pi__hover,
},
- .detail = {
- .style = &pi__item_detail,
- },
- .hover_bg = &pi__hover,
},
},
[PI_ENTRY_COOKIES] = {
.type = PAGE_INFO_ENTRY_TYPE_ITEM,
- .item = {
+ .u = {
.item = {
- .style = &pi__item,
- },
- .detail = {
- .style = &pi__item_detail,
+ .item = {
+ .style = &pi__item,
+ },
+ .detail = {
+ .style = &pi__item_detail,
+ },
+ .hover_bg = &pi__hover,
},
- .hover_bg = &pi__hover,
},
},
};
@@ -358,36 +364,37 @@ static nserror page_info__measure_text(
switch (entry->type) {
case PAGE_INFO_ENTRY_TYPE_TEXT:
err = page_info__measure_text_entry(
- &entry->text);
+ &entry->u.text);
if (err != NSERROR_OK) {
return err;
}
if (i == PI_ENTRY_DOMAIN) {
- entry->text.padding_bottom =
- entry->text.height * 3 / 2;
+ entry->u.text.padding_bottom =
+ entry->u.text.height * 3 / 2;
}
break;
case PAGE_INFO_ENTRY_TYPE_ITEM:
err = page_info__measure_text_entry(
- &entry->item.item);
+ &entry->u.item.item);
if (err != NSERROR_OK) {
return err;
}
err = page_info__measure_text_entry(
- &entry->item.detail);
+ &entry->u.item.detail);
if (err != NSERROR_OK) {
return err;
}
- padding = entry->item.item.height / 4;
- entry->item.padding_top = padding;
- entry->item.padding_bottom = padding;
+ padding = entry->u.item.item.height / 4;
+ entry->u.item.padding_top = padding;
+ entry->u.item.padding_bottom = padding;
break;
}
}
- pi->window_padding = pi->entries[PI_ENTRY_DOMAIN].item.item.height / 2;
+ pi->window_padding = pi->entries[PI_ENTRY_DOMAIN]
+ .u.item.item.height / 2;
return NSERROR_OK;
}
@@ -426,13 +433,13 @@ static nserror page_info__set_text(
assert(pi != NULL);
assert(pi->state < PAGE_STATE__COUNT);
- pi->entries[PI_ENTRY_HEADER].text.style = &pi__heading[pi->state];
- pi->entries[PI_ENTRY_HEADER].text.text = header[pi->state];
- pi->entries[PI_ENTRY_DOMAIN].text.text = (pi->domain) ?
+ pi->entries[PI_ENTRY_HEADER].u.text.style = &pi__heading[pi->state];
+ pi->entries[PI_ENTRY_HEADER].u.text.text = header[pi->state];
+ pi->entries[PI_ENTRY_DOMAIN].u.text.text = (pi->domain) ?
lwc_string_data(pi->domain) : "<No domain>";
- pi->entries[PI_ENTRY_CERT].item.item.text = "Certificate: ";
- pi->entries[PI_ENTRY_CERT].item.detail.text = certificate[pi->state];
+ pi->entries[PI_ENTRY_CERT].u.item.item.text = "Certificate: ";
+ pi->entries[PI_ENTRY_CERT].u.item.detail.text = certificate[pi->state];
printed = snprintf(pi->cookie_text, sizeof(pi->cookie_text),
"(%u in use)", pi->cookies);
@@ -442,8 +449,8 @@ static nserror page_info__set_text(
} else if ((unsigned) printed >= sizeof(pi->cookie_text)) {
return NSERROR_NOSPACE;
}
- pi->entries[PI_ENTRY_COOKIES].item.item.text = "Cookies: ";
- pi->entries[PI_ENTRY_COOKIES].item.detail.text = pi->cookie_text;
+ pi->entries[PI_ENTRY_COOKIES].u.item.item.text = "Cookies: ";
+ pi->entries[PI_ENTRY_COOKIES].u.item.detail.text = pi->cookie_text;
return page_info__measure_text(pi);
}
@@ -487,23 +494,23 @@ static nserror page_info__layout(
switch (entry->type) {
case PAGE_INFO_ENTRY_TYPE_TEXT:
- cur_y += entry->text.height;
- if (max_x < entry->text.width) {
- max_x = entry->text.width;
+ cur_y += entry->u.text.height;
+ if (max_x < entry->u.text.width) {
+ max_x = entry->u.text.width;
}
- cur_y += entry->text.padding_bottom;
+ cur_y += entry->u.text.padding_bottom;
break;
case PAGE_INFO_ENTRY_TYPE_ITEM:
{
- int full_width = entry->item.item.width +
- entry->item.detail.width;
- cur_y += entry->item.padding_top;
- cur_y += entry->item.item.height;
+ int full_width = entry->u.item.item.width +
+ entry->u.item.detail.width;
+ cur_y += entry->u.item.padding_top;
+ cur_y += entry->u.item.item.height;
if (max_x < full_width) {
max_x = full_width;
}
- cur_y += entry->item.padding_bottom;
+ cur_y += entry->u.item.padding_bottom;
}
break;
}
@@ -623,43 +630,43 @@ nserror page_info_redraw(
switch (entry->type) {
case PAGE_INFO_ENTRY_TYPE_TEXT:
err = page_info__redraw_text_entry(
- &entry->text,
+ &entry->u.text,
cur_x, cur_y,
&new_ctx);
if (err != NSERROR_OK) {
goto cleanup;
}
- cur_y += entry->text.height;
- cur_y += entry->text.padding_bottom;
+ cur_y += entry->u.text.height;
+ cur_y += entry->u.text.padding_bottom;
break;
case PAGE_INFO_ENTRY_TYPE_ITEM:
- if (entry->item.hover) {
+ if (entry->u.item.hover) {
r.y0 = cur_y;
- r.y1 = cur_y + entry->item.padding_top +
- entry->item.item.height +
- entry->item.padding_bottom;
+ r.y1 = cur_y + entry->u.item.padding_top +
+ entry->u.item.item.height +
+ entry->u.item.padding_bottom;
new_ctx.plot->rectangle(&new_ctx,
&pi__hover, &r);
}
- cur_y += entry->item.padding_top;
+ cur_y += entry->u.item.padding_top;
err = page_info__redraw_text_entry(
- &entry->item.item,
+ &entry->u.item.item,
cur_x, cur_y,
&new_ctx);
if (err != NSERROR_OK) {
goto cleanup;
}
- cur_x += entry->item.item.width;
+ cur_x += entry->u.item.item.width;
err = page_info__redraw_text_entry(
- &entry->item.detail,
+ &entry->u.item.detail,
cur_x, cur_y,
&new_ctx);
if (err != NSERROR_OK) {
goto cleanup;
}
- cur_y += entry->item.item.height;
- cur_y += entry->item.padding_bottom;
+ cur_y += entry->u.item.item.height;
+ cur_y += entry->u.item.padding_bottom;
break;
}
}
@@ -728,14 +735,14 @@ nserror page_info_mouse_action(
switch (entry->type) {
case PAGE_INFO_ENTRY_TYPE_TEXT:
- cur_y += entry->text.height;
- cur_y += entry->text.padding_bottom;
+ cur_y += entry->u.text.height;
+ cur_y += entry->u.text.padding_bottom;
break;
case PAGE_INFO_ENTRY_TYPE_ITEM:
- height = entry->item.padding_top +
- entry->item.item.height +
- entry->item.padding_bottom;
+ height = entry->u.item.padding_top +
+ entry->u.item.item.height +
+ entry->u.item.padding_bottom;
if (y >= cur_y && y < cur_y + height) {
hovering = true;
@@ -745,7 +752,7 @@ nserror page_info_mouse_action(
return err;
}
}
- if (entry->item.hover != hovering) {
+ if (entry->u.item.hover != hovering) {
int w, h;
struct rect r = {
.x0 = 0,
@@ -758,7 +765,7 @@ nserror page_info_mouse_action(
pi->cw_t->invalidate(pi->cw_h, &r);
}
- entry->item.hover = hovering;
+ entry->u.item.hover = hovering;
cur_y += height;
break;
}