summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--!NetSurf/Resources/CSS,f7916
-rw-r--r--css/css.c31
-rw-r--r--gtk/res/gtkdefault.css7
-rw-r--r--render/layout.c53
4 files changed, 49 insertions, 58 deletions
diff --git a/!NetSurf/Resources/CSS,f79 b/!NetSurf/Resources/CSS,f79
index e8c611f50..78d0bbce4 100644
--- a/!NetSurf/Resources/CSS,f79
+++ b/!NetSurf/Resources/CSS,f79
@@ -152,30 +152,30 @@ form { display: block; }
form > * { margin-left: inherit; margin-right: inherit; }
input { background-color: #fff; color: #000; text-align: left;
- font-family: sans-serif; width: 10em; height: 1.5em; overflow: hidden;
- margin: 1px; border: 1px solid #000; padding: 0 2px; }
+ font-family: sans-serif; width: 10em; height: auto; overflow: hidden;
+ margin: 1px; border: 2px solid #333; padding: 1px 2px; }
input[type=button], input[type=reset], input[type=submit], button {
background-color: #d9d9d9; color: #000; text-align: center;
width: auto; height: auto;
- border: medium outset #d9d9d9; padding: 0 0.5em; }
+ border: medium outset #d9d9d9; padding: 1px 0.5em; }
input[type=image] { background-color: transparent; color: #000;
- width: auto; height: auto; border: none; }
+ width: auto; height: auto; border: none; padding: 0 2px; }
input[type=checkbox], input[type=radio] { background-color: transparent;
width: 1em; height: 1em; border: none; padding: 0 0.1em; }
input[type=file] { background-color: #d9d9d9; color: #000;
width: 10em; height: 1.5em; font-style: italic;
- border: medium inset #d9d9d9; }
+ border: medium inset #d9d9d9; padding: 1px 2px;}
input[align=left] { float: left; }
input[align=right] { float: right; }
select { background-color: #d9d9d9; color: #000; text-align: left;
- font-family: sans-serif; width: 10em; height: 1.5em; overflow: hidden;
- margin: 1px; border: medium inset #d9d9d9; padding: 0 2px; }
+ font-family: sans-serif; width: 10em; height: auto; overflow: hidden;
+ margin: 1px; border: medium inset #d9d9d9; padding: 1px 2px; }
select:after { content: "\25bc"; border-left: 4px ridge #d9d9d9; }
textarea { background-color: #fff; color: #000; text-align: left;
font-family: monospace; overflow: scroll;
- margin: 1px; border: 1px solid #000; padding: 0 2px; }
+ margin: 1px; border: 2px solid #333; padding: 0 2px; }
fieldset { display: block; border: thin solid #888; margin: 1.12em 0; }
diff --git a/css/css.c b/css/css.c
index cb007978a..f863d4cfb 100644
--- a/css/css.c
+++ b/css/css.c
@@ -99,6 +99,7 @@
#include "css/parser.h"
#ifdef riscos
#include "desktop/gui.h"
+#include "desktop/options.h"
#endif
#include "utils/log.h"
#include "utils/messages.h"
@@ -3010,12 +3011,34 @@ unsigned int css_hash(const char *s, int length)
float css_len2px(const struct css_length *length,
const struct css_style *style)
{
- assert(!((length->unit == CSS_UNIT_EM || length->unit == CSS_UNIT_EX) && style == 0));
+ struct css_length font;
+ font.unit = CSS_UNIT_PT;
+
+ assert(!((length->unit == CSS_UNIT_EM || length->unit == CSS_UNIT_EX) &&
+ style == 0));
switch (length->unit) {
- case CSS_UNIT_EM: return length->value * css_len2px(&style->font_size.value.length, 0);
- case CSS_UNIT_EX: return length->value * css_len2px(&style->font_size.value.length, 0) * 0.6;
+ case CSS_UNIT_EM:
+ if ((font.value = css_len2pt(&style->
+ font_size.value.length, style)) <
+ option_font_min_size / 10) {
+ font.value = option_font_min_size / 10;
+ return length->value * css_len2px(&font,
+ style);
+ } else
+ return length->value * css_len2px(&style->
+ font_size.value.length, 0);
+ case CSS_UNIT_EX:
+ if ((font.value = css_len2pt(&style->
+ font_size.value.length, style)) <
+ option_font_min_size / 10) {
+ font.value = option_font_min_size / 10;
+ return length->value * css_len2px(&font,
+ style) * 0.6;
+ } else
+ return length->value * css_len2px(&style->
+ font_size.value.length, 0) * 0.6;
case CSS_UNIT_PX: return length->value;
- /* We assume the screen and any other output has the same dpi */
+ /* We assume the screen and any other output has the same dpi */
case CSS_UNIT_IN: return length->value * css_screen_dpi;
case CSS_UNIT_CM: return length->value * css_screen_dpi / 2.54;
case CSS_UNIT_MM: return length->value * css_screen_dpi / 25.4;
diff --git a/gtk/res/gtkdefault.css b/gtk/res/gtkdefault.css
index 33e82978d..ab66a815b 100644
--- a/gtk/res/gtkdefault.css
+++ b/gtk/res/gtkdefault.css
@@ -11,14 +11,11 @@
input { font-size: 95%; }
input[type=button], input[type=reset], input[type=submit], button {
background-color: #ddd; border: medium outset #ddd; }
-input[type=image] { background-color: transparent; color: #000; width: auto;
- height: auto; border: 0; }
input[type=checkbox], input[type=radio] { font-size: 105%; }
-input[type=file] { background-color: #ddd; border: medium inset #ddd;
- font-style: italic; }
+input[type=file] { background-color: #ddd; border: medium inset #ddd; }
select { background-color: #ddd; border: medium inset #ddd; font-size: 95%; }
-select:after { content: "\25bc"; border-left:4px ridge #ddd; }
+select:after { border-left:4px ridge #ddd; }
textarea { font-size: 95%; }
diff --git a/render/layout.c b/render/layout.c
index ae2fa20cf..a12029a47 100644
--- a/render/layout.c
+++ b/render/layout.c
@@ -46,7 +46,6 @@
#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"
@@ -1028,7 +1027,6 @@ 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,
@@ -1047,8 +1045,10 @@ bool layout_line(struct box *first, int *width, int *y,
if (x1 < x0)
x1 = x0;
- /* get minimum line height from containing block */
- if (has_text_children)
+ /* get minimum line height from containing block.
+ * this is the line-height if there are text children and also in the
+ * case of an initially empty text input */
+ if (has_text_children || first->parent->parent->gadget)
used_height = height = line_height(first->parent->parent->style);
else
/* inline containers with no text are usually for layout and
@@ -1159,24 +1159,11 @@ 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 = min_gadget_size ? min_gadget_size :
- css_len2px(&b->style->width.value.
- length, b->style);
+ b->width = css_len2px(&b->style->width.value.
+ length, b->style);
break;
case CSS_WIDTH_PERCENT:
b->width = *width *
@@ -1192,9 +1179,8 @@ bool layout_line(struct box *first, int *width, int *y,
/* height */
switch (b->style->height.height) {
case CSS_HEIGHT_LENGTH:
- b->height = min_gadget_size ? min_gadget_size :
- css_len2px(&b->style->height.length,
- b->style);
+ b->height = css_len2px(&b->style->height.length,
+ b->style);
break;
case CSS_HEIGHT_AUTO:
default:
@@ -1577,7 +1563,6 @@ 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) {
@@ -1672,24 +1657,11 @@ 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 = min_gadget_size ? min_gadget_size :
- css_len2px(&b->style->width.value.
- length, b->style);
+ width = css_len2px(&b->style->width.value.
+ length, b->style);
if (width < 0)
width = 0;
break;
@@ -1707,9 +1679,8 @@ struct box *layout_minmax_line(struct box *first,
/* height */
switch (b->style->height.height) {
case CSS_HEIGHT_LENGTH:
- height = min_gadget_size ? min_gadget_size :
- css_len2px(&b->style->height.length,
- b->style);
+ height = css_len2px(&b->style->height.length,
+ b->style);
break;
case CSS_HEIGHT_AUTO:
default: