[RTL] Move image/table draw to the DRAW_STEP_TEXT
This commit is contained in:
parent
40b378e9e2
commit
b4efd27112
1 changed files with 80 additions and 78 deletions
|
@ -910,6 +910,22 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
double uth = TS->shaped_text_get_underline_thickness(rid);
|
double uth = TS->shaped_text_get_underline_thickness(rid);
|
||||||
|
|
||||||
off.y += l_ascent;
|
off.y += l_ascent;
|
||||||
|
|
||||||
|
const Glyph *glyphs = TS->shaped_text_get_glyphs(rid);
|
||||||
|
int gl_size = TS->shaped_text_get_glyph_count(rid);
|
||||||
|
Vector2i chr_range = TS->shaped_text_get_range(rid);
|
||||||
|
|
||||||
|
int sel_start = -1;
|
||||||
|
int sel_end = -1;
|
||||||
|
|
||||||
|
if (selection.active && (selection.from_frame->lines[selection.from_line].char_offset + selection.from_char) <= (l.char_offset + chr_range.y) && (selection.to_frame->lines[selection.to_line].char_offset + selection.to_char) >= (l.char_offset + chr_range.x)) {
|
||||||
|
sel_start = MAX(chr_range.x, (selection.from_frame->lines[selection.from_line].char_offset + selection.from_char) - l.char_offset);
|
||||||
|
sel_end = MIN(chr_range.y, (selection.to_frame->lines[selection.to_line].char_offset + selection.to_char) - l.char_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
int processed_glyphs_step = 0;
|
||||||
|
for (int step = DRAW_STEP_BACKGROUND; step < DRAW_STEP_MAX; step++) {
|
||||||
|
if (step == DRAW_STEP_TEXT) {
|
||||||
// Draw inlined objects.
|
// Draw inlined objects.
|
||||||
Array objects = TS->shaped_text_get_objects(rid);
|
Array objects = TS->shaped_text_get_objects(rid);
|
||||||
for (int i = 0; i < objects.size(); i++) {
|
for (int i = 0; i < objects.size(); i++) {
|
||||||
|
@ -988,21 +1004,7 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Glyph *glyphs = TS->shaped_text_get_glyphs(rid);
|
|
||||||
int gl_size = TS->shaped_text_get_glyph_count(rid);
|
|
||||||
Vector2i chr_range = TS->shaped_text_get_range(rid);
|
|
||||||
|
|
||||||
int sel_start = -1;
|
|
||||||
int sel_end = -1;
|
|
||||||
|
|
||||||
if (selection.active && (selection.from_frame->lines[selection.from_line].char_offset + selection.from_char) <= (l.char_offset + chr_range.y) && (selection.to_frame->lines[selection.to_line].char_offset + selection.to_char) >= (l.char_offset + chr_range.x)) {
|
|
||||||
sel_start = MAX(chr_range.x, (selection.from_frame->lines[selection.from_line].char_offset + selection.from_char) - l.char_offset);
|
|
||||||
sel_end = MIN(chr_range.y, (selection.to_frame->lines[selection.to_line].char_offset + selection.to_char) - l.char_offset);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int processed_glyphs_step = 0;
|
|
||||||
for (int step = DRAW_STEP_BACKGROUND; step < DRAW_STEP_MAX; step++) {
|
|
||||||
Vector2 off_step = off;
|
Vector2 off_step = off;
|
||||||
processed_glyphs_step = r_processed_glyphs;
|
processed_glyphs_step = r_processed_glyphs;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue