Ensure minimal thickness for RichTextLabel underlines
This commit is contained in:
parent
9ad8dfa6cc
commit
28b7556914
|
@ -1165,7 +1165,7 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
} else if (ul_started) {
|
} else if (ul_started) {
|
||||||
ul_started = false;
|
ul_started = false;
|
||||||
float y_off = TS->shaped_text_get_underline_position(rid);
|
float y_off = TS->shaped_text_get_underline_position(rid);
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
|
draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
|
||||||
}
|
}
|
||||||
if (_find_hint(it, nullptr) && underline_hint) {
|
if (_find_hint(it, nullptr) && underline_hint) {
|
||||||
|
@ -1178,7 +1178,7 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
} else if (dot_ul_started) {
|
} else if (dot_ul_started) {
|
||||||
dot_ul_started = false;
|
dot_ul_started = false;
|
||||||
float y_off = TS->shaped_text_get_underline_position(rid);
|
float y_off = TS->shaped_text_get_underline_position(rid);
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, MAX(2.0, underline_width * 2));
|
draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, MAX(2.0, underline_width * 2));
|
||||||
}
|
}
|
||||||
if (_find_strikethrough(it)) {
|
if (_find_strikethrough(it)) {
|
||||||
|
@ -1191,7 +1191,7 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
} else if (st_started) {
|
} else if (st_started) {
|
||||||
st_started = false;
|
st_started = false;
|
||||||
float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
|
float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
|
draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1334,19 +1334,19 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
if (ul_started) {
|
if (ul_started) {
|
||||||
ul_started = false;
|
ul_started = false;
|
||||||
float y_off = TS->shaped_text_get_underline_position(rid);
|
float y_off = TS->shaped_text_get_underline_position(rid);
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
|
draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
|
||||||
}
|
}
|
||||||
if (dot_ul_started) {
|
if (dot_ul_started) {
|
||||||
dot_ul_started = false;
|
dot_ul_started = false;
|
||||||
float y_off = TS->shaped_text_get_underline_position(rid);
|
float y_off = TS->shaped_text_get_underline_position(rid);
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, MAX(2.0, underline_width * 2));
|
draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, MAX(2.0, underline_width * 2));
|
||||||
}
|
}
|
||||||
if (st_started) {
|
if (st_started) {
|
||||||
st_started = false;
|
st_started = false;
|
||||||
float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
|
float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
|
draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1356,19 +1356,19 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
if (ul_started) {
|
if (ul_started) {
|
||||||
ul_started = false;
|
ul_started = false;
|
||||||
float y_off = TS->shaped_text_get_underline_position(rid);
|
float y_off = TS->shaped_text_get_underline_position(rid);
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
|
draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
|
||||||
}
|
}
|
||||||
if (dot_ul_started) {
|
if (dot_ul_started) {
|
||||||
dot_ul_started = false;
|
dot_ul_started = false;
|
||||||
float y_off = TS->shaped_text_get_underline_position(rid);
|
float y_off = TS->shaped_text_get_underline_position(rid);
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, MAX(2.0, underline_width * 2));
|
draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, MAX(2.0, underline_width * 2));
|
||||||
}
|
}
|
||||||
if (st_started) {
|
if (st_started) {
|
||||||
st_started = false;
|
st_started = false;
|
||||||
float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
|
float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
|
||||||
float underline_width = TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale;
|
float underline_width = MAX(1.0, TS->shaped_text_get_underline_thickness(rid) * theme_cache.base_scale);
|
||||||
draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
|
draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
|
||||||
}
|
}
|
||||||
// Draw foreground color box
|
// Draw foreground color box
|
||||||
|
|
Loading…
Reference in New Issue