2
0
Fork 0

Fix calculation bug with `TextEdit::get_line_height()`

When `get_line_height()` is less than `1`, there is no visible text.
So limit the return value of `get_line_height()` to **not less** than
`1` for calculation.

(cherry picked from commit 391bce44b7)
4.0
Rindbee 2023-04-30 10:54:50 +07:00 committed by Yuri Sizov
parent 566ad9813e
commit ce116e4708
2 changed files with 6 additions and 2 deletions

@ -347,7 +347,8 @@
<method name="get_line_height" qualifiers="const">
<return type="int" />
<description>
Returns the height of a largest line.
Returns the maximum value of the line height among all lines.
[b]Note:[/b] The return value is influenced by [theme_item line_spacing] and [theme_item font_size]. And it will not be less than [code]1[/code].
</description>
</method>
<method name="get_line_width" qualifiers="const">

@ -3001,6 +3001,9 @@ void TextEdit::_update_caches() {
outline_color = get_theme_color(SNAME("font_outline_color"));
line_spacing = get_theme_constant(SNAME("line_spacing"));
if (text.get_line_height() + line_spacing < 1) {
WARN_PRINT("Line height is too small, please increase font_size and/or line_spacing");
}
background_color = get_theme_color(SNAME("background_color"));
current_line_color = get_theme_color(SNAME("current_line_color"));
@ -3470,7 +3473,7 @@ int TextEdit::get_line_width(int p_line, int p_wrap_index) const {
}
int TextEdit::get_line_height() const {
return text.get_line_height() + line_spacing;
return MAX(text.get_line_height() + line_spacing, 1);
}
int TextEdit::get_indent_level(int p_line) const {