With #113707 text cursor position is set using the character's visible bounds, so special care is needed for those without bounds like space. Forgot this also applies to 4.0.
This commit is contained in:
@@ -2055,10 +2055,15 @@ static void widget_draw_text(const uiFontStyle *fstyle,
|
||||
bool has_prev = false;
|
||||
if (pos > 0) {
|
||||
if (BLF_str_offset_to_glyph_bounds(
|
||||
fstyle->uifont_id, drawstr + but->ofs, pos - 1, &bounds) &&
|
||||
!BLI_rcti_is_empty(&bounds))
|
||||
fstyle->uifont_id, drawstr + but->ofs, pos - 1, &bounds))
|
||||
{
|
||||
prev_right_edge = bounds.xmax;
|
||||
if (bounds.xmax > bounds.xmin) {
|
||||
prev_right_edge = bounds.xmax;
|
||||
}
|
||||
else {
|
||||
/* Some characters, like space, have empty bounds. */
|
||||
prev_right_edge = BLF_width(fstyle->uifont_id, drawstr + but->ofs, pos);
|
||||
}
|
||||
has_prev = true;
|
||||
}
|
||||
}
|
||||
@@ -2067,9 +2072,7 @@ static void widget_draw_text(const uiFontStyle *fstyle,
|
||||
int next_left_edge = 0;
|
||||
bool has_next = false;
|
||||
if (pos < strlen(drawstr)) {
|
||||
if (BLF_str_offset_to_glyph_bounds(
|
||||
fstyle->uifont_id, drawstr + but->ofs, pos, &bounds) &&
|
||||
!BLI_rcti_is_empty(&bounds))
|
||||
if (BLF_str_offset_to_glyph_bounds(fstyle->uifont_id, drawstr + but->ofs, pos, &bounds))
|
||||
{
|
||||
next_left_edge = bounds.xmin;
|
||||
has_next = true;
|
||||
|
||||
Reference in New Issue
Block a user