forked from bartvdbraak/blender
Text Editor: incorrect clipping at bottom
Patch T42637 by @donfabio
This commit is contained in:
parent
31093f896f
commit
176705c480
@ -380,7 +380,9 @@ static int text_draw_wrapped(SpaceText *st, const char *str, int x, int y, int w
|
||||
int a, fstart, fpos; /* utf8 chars */
|
||||
int mi, ma, mstart, mend; /* mem */
|
||||
char fmt_prev = 0xff;
|
||||
|
||||
/* don't draw lines below this */
|
||||
const int clip_min_y = -(int)(st->lheight_dpi - 1);
|
||||
|
||||
flatten_string(st, &fs, str);
|
||||
str = fs.buf;
|
||||
max = w / st->cwidth;
|
||||
@ -423,7 +425,8 @@ static int text_draw_wrapped(SpaceText *st, const char *str, int x, int y, int w
|
||||
mend = txt_utf8_forward_columns(str + mend, max, &padding) - str;
|
||||
end = (wrap += max - padding);
|
||||
|
||||
if (y <= 0) break;
|
||||
if (y <= clip_min_y)
|
||||
break;
|
||||
}
|
||||
else if (str[mi] == ' ' || str[mi] == '-') {
|
||||
wrap = i + 1; mend = mi + 1;
|
||||
@ -431,7 +434,7 @@ static int text_draw_wrapped(SpaceText *st, const char *str, int x, int y, int w
|
||||
}
|
||||
|
||||
/* Draw the remaining text */
|
||||
for (a = fstart, ma = mstart; str[ma] && y > 0; a++, ma += BLI_str_utf8_size_safe(str + ma)) {
|
||||
for (a = fstart, ma = mstart; str[ma] && y > clip_min_y; a++, ma += BLI_str_utf8_size_safe(str + ma)) {
|
||||
if (use_syntax) {
|
||||
if (fmt_prev != format[a]) format_draw_color(fmt_prev = format[a]);
|
||||
}
|
||||
@ -1322,6 +1325,8 @@ void draw_text_main(SpaceText *st, ARegion *ar)
|
||||
int i, x, y, winx, linecount = 0, lineno = 0;
|
||||
int wraplinecount = 0, wrap_skip = 0;
|
||||
int margin_column_x;
|
||||
/* don't draw lines below this */
|
||||
const int clip_min_y = -(int)(st->lheight_dpi - 1);
|
||||
|
||||
/* if no text, nothing to do */
|
||||
if (!text)
|
||||
@ -1329,7 +1334,7 @@ void draw_text_main(SpaceText *st, ARegion *ar)
|
||||
|
||||
/* dpi controlled line height and font size */
|
||||
st->lheight_dpi = (U.widget_unit * st->lheight) / 20;
|
||||
st->viewlines = (st->lheight_dpi) ? (int)ar->winy / (st->lheight_dpi + TXT_LINE_SPACING) : 0;
|
||||
st->viewlines = (st->lheight_dpi) ? (int)(ar->winy - clip_min_y) / (st->lheight_dpi + TXT_LINE_SPACING) : 0;
|
||||
|
||||
text_update_drawcache(st, ar);
|
||||
|
||||
@ -1393,7 +1398,7 @@ void draw_text_main(SpaceText *st, ARegion *ar)
|
||||
/* draw the text */
|
||||
UI_ThemeColor(TH_TEXT);
|
||||
|
||||
for (i = 0; y > 0 && i < st->viewlines && tmp; i++, tmp = tmp->next) {
|
||||
for (i = 0; y > clip_min_y && i < st->viewlines && tmp; i++, tmp = tmp->next) {
|
||||
if (st->showsyntax && !tmp->format)
|
||||
tft->format_line(st, tmp, false);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user