[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);
|
||||
|
||||
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.
|
||||
Array objects = TS->shaped_text_get_objects(rid);
|
||||
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;
|
||||
processed_glyphs_step = r_processed_glyphs;
|
||||
|
||||
|
|
Loading…
Reference in a new issue