diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-01-03 17:41:00 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-01-03 17:41:58 +0300 |
commit | d57847ca5b90573842911082005f36cec55a9ab6 (patch) | |
tree | e74a4a6bc90cb14e99a1434097652944c68609fe | |
parent | a3df65dea819309496447a26ddf4d7dbe0c3203a (diff) |
Fix text wrapping off-by-one error w/ string width
Caused odd white space error in tooltip enum values.
-rw-r--r-- | source/blender/blenfont/intern/blf_font.c | 8 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c index 3f3ca78b6cd..bf3db19e431 100644 --- a/source/blender/blenfont/intern/blf_font.c +++ b/source/blender/blenfont/intern/blf_font.c @@ -721,11 +721,13 @@ static void blf_font_wrap_apply( } else if (UNLIKELY(g->c != ' ' && (g_prev ? g_prev->c == ' ' : false))) { wrap.last[0] = i_curr; - wrap.last[1] = i; + wrap.last[1] = i_curr; } if (UNLIKELY(do_draw)) { - // printf("(%d..%d) `%.*s`\n", wrap.start, wrap.last[0], (wrap.last[0] - wrap.start) - 1, &str[wrap.start]); + // printf("(%03d..%03d) `%.*s`\n", + // wrap.start, wrap.last[0], (wrap.last[0] - wrap.start) - 1, &str[wrap.start]); + callback(font, &str[wrap.start], (wrap.last[0] - wrap.start) - 1, pen_y, userdata); wrap.start = wrap.last[0]; i = wrap.last[1]; @@ -740,7 +742,7 @@ static void blf_font_wrap_apply( g_prev = g; } - // printf("done! %d lines\n", lines); + // printf("done! lines: %d, width, %d\n", lines, pen_x_next); if (r_info) { r_info->lines = lines; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 5fe6fd119aa..709071aa67e 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -392,7 +392,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) if (but_tip.strinfo) { BLI_strncpy(data->header, but_tip.strinfo, sizeof(data->lines[0])); if (enum_label.strinfo) { - BLI_snprintf(data->header, sizeof(data->header), "%s: ", but_tip.strinfo); + BLI_snprintf(data->header, sizeof(data->header), "%s: ", but_tip.strinfo); BLI_strncpy(data->active_info, enum_label.strinfo, sizeof(data->lines[0])); } data->format[data->totline].style = UI_TIP_STYLE_HEADER; @@ -616,7 +616,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) if (data->format[i].style == UI_TIP_STYLE_HEADER) { w = BLF_width_ex(data->fstyle.uifont_id, data->header, sizeof(data->header), &info); if (enum_label.strinfo) { - x_pos = info.width + (U.widget_unit / 2); + x_pos = info.width; w = max_ii(w, x_pos + BLF_width(data->fstyle.uifont_id, data->active_info, sizeof(data->active_info))); } } |