Apply min font size config option to radio icons and checkboxes.
svn path=/trunk/netsurf/; revision=3797
This commit is contained in:
parent
416c81208b
commit
38dcd3f172
|
@ -46,6 +46,7 @@
|
|||
#include "desktop/options.h"
|
||||
#include "render/box.h"
|
||||
#include "render/font.h"
|
||||
#include "render/form.h"
|
||||
#include "render/layout.h"
|
||||
#define NDEBUG
|
||||
#include "utils/log.h"
|
||||
|
@ -1027,6 +1028,7 @@ bool layout_line(struct box *first, int *width, int *y,
|
|||
int space_before = 0, space_after = 0;
|
||||
unsigned int inline_count = 0;
|
||||
unsigned int i;
|
||||
int min_gadget_size = 0;
|
||||
|
||||
LOG(("first %p, first->text '%.*s', width %i, y %i, cx %i, cy %i",
|
||||
first, (int) first->length, first->text, *width,
|
||||
|
@ -1157,16 +1159,31 @@ bool layout_line(struct box *first, int *width, int *y,
|
|||
/* inline replaced, 10.3.2 and 10.6.2 */
|
||||
assert(b->style);
|
||||
|
||||
min_gadget_size = 0;
|
||||
/* checkboxes and radiobuttons contain no text but need to
|
||||
* follow configured min font size option */
|
||||
if (b->gadget && (b->gadget->type == GADGET_RADIO ||
|
||||
b->gadget->type == GADGET_CHECKBOX)) {
|
||||
min_gadget_size = option_font_min_size * css_screen_dpi
|
||||
/ 720.0;
|
||||
min_gadget_size = min_gadget_size > css_len2px(&b->
|
||||
style->font_size.value.length, b->style) ?
|
||||
min_gadget_size : 0;
|
||||
}
|
||||
|
||||
/* calculate box width */
|
||||
switch (b->style->width.width) {
|
||||
case CSS_WIDTH_LENGTH:
|
||||
b->width = css_len2px(&b->style->width.value.
|
||||
length, b->style);
|
||||
b->width = min_gadget_size ? css_screen_dpi *
|
||||
option_font_min_size / 720.0 :
|
||||
css_len2px(&b->style->width.value.
|
||||
length, b->style);
|
||||
break;
|
||||
case CSS_WIDTH_PERCENT:
|
||||
b->width = *width *
|
||||
b->style->width.value.percent /
|
||||
100;
|
||||
b->width = min_gadget_size ? css_screen_dpi *
|
||||
option_font_min_size / 720.0 :
|
||||
css_len2px(&b->style->width.value.
|
||||
length, b->style);
|
||||
break;
|
||||
case CSS_WIDTH_AUTO:
|
||||
default:
|
||||
|
@ -1177,8 +1194,10 @@ bool layout_line(struct box *first, int *width, int *y,
|
|||
/* height */
|
||||
switch (b->style->height.height) {
|
||||
case CSS_HEIGHT_LENGTH:
|
||||
b->height = css_len2px(&b->style->height.length,
|
||||
b->style);
|
||||
b->height = min_gadget_size ? css_screen_dpi *
|
||||
option_font_min_size / 720.0 :
|
||||
css_len2px(&b->style->height.length,
|
||||
b->style);
|
||||
break;
|
||||
case CSS_HEIGHT_AUTO:
|
||||
default:
|
||||
|
@ -1561,6 +1580,7 @@ struct box *layout_minmax_line(struct box *first,
|
|||
float frac;
|
||||
size_t i, j;
|
||||
struct box *b;
|
||||
int min_gadget_size = 0;
|
||||
|
||||
/* corresponds to the pass 1 loop in layout_line() */
|
||||
for (b = first; b; b = b->next) {
|
||||
|
@ -1655,13 +1675,25 @@ struct box *layout_minmax_line(struct box *first,
|
|||
/* inline replaced, 10.3.2 and 10.6.2 */
|
||||
assert(b->style);
|
||||
|
||||
min_gadget_size = 0;
|
||||
/* checkboxes and radiobuttons contain no text but need to
|
||||
* follow configured min font size option */
|
||||
if (b->gadget && (b->gadget->type == GADGET_RADIO ||
|
||||
b->gadget->type == GADGET_CHECKBOX)) {
|
||||
min_gadget_size = option_font_min_size * css_screen_dpi
|
||||
/ 720.0;
|
||||
min_gadget_size = min_gadget_size > css_len2px(&b->
|
||||
style->font_size.value.length, b->style) ?
|
||||
min_gadget_size : 0;
|
||||
}
|
||||
|
||||
/* calculate box width */
|
||||
switch (b->style->width.width) {
|
||||
case CSS_WIDTH_LENGTH:
|
||||
width = css_len2px(&b->style->width.value.
|
||||
length, b->style);
|
||||
if (width < 0)
|
||||
width = 0;
|
||||
width = min_gadget_size ? css_screen_dpi *
|
||||
option_font_min_size / 720.0 :
|
||||
css_len2px(&b->style->width.value.
|
||||
length, b->style);
|
||||
break;
|
||||
case CSS_WIDTH_PERCENT:
|
||||
/*b->width = width *
|
||||
|
@ -1677,8 +1709,10 @@ struct box *layout_minmax_line(struct box *first,
|
|||
/* height */
|
||||
switch (b->style->height.height) {
|
||||
case CSS_HEIGHT_LENGTH:
|
||||
height = css_len2px(&b->style->height.length,
|
||||
b->style);
|
||||
height = min_gadget_size ? css_screen_dpi *
|
||||
option_font_min_size / 720.0 :
|
||||
css_len2px(&b->style->height.length,
|
||||
b->style);
|
||||
break;
|
||||
case CSS_HEIGHT_AUTO:
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue