浏览代码

Correction to RichTextLabel Tabulation

Correct backtrack assignment to prevent excessive tabulation. Worth
noting that tabulation is treated differently in RichTextLabel because
of custom user-asignable tab variable which creates problems with
dynamic fonts specifically.

(cherry picked from commit 2000e110a9d38ebe889f9d4e6cfb106cbcc58bc8)
Eoin O'Neill 5 年之前
父节点
当前提交
c18381119e
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      scene/gui/rich_text_label.cpp

+ 2 - 1
scene/gui/rich_text_label.cpp

@@ -576,13 +576,14 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
 									} else {
 										cw = drawer.draw_char(ci, p_ofs + Point2(align_ofs + pofs, y + lh - line_descent) + fx_offset, fx_char, c[i + 1], fx_color);
 									}
-								} else if (previously_visible) {
+								} else if (previously_visible && c[i] != '\t') {
 									backtrack += font->get_char_size(fx_char, c[i + 1]).x;
 								}
 
 								p_char_count++;
 								if (c[i] == '\t') {
 									cw = tab_size * font->get_char_size(' ').width;
+									backtrack = MAX(0, backtrack - cw);
 								}
 
 								ofs += cw;