Commit: 176705c480851b7390fa2a2727721dcc774f39ed
Author: Campbell Barton
Date:   Fri Nov 21 21:22:31 2014 +0100
Branches: master
https://developer.blender.org/rB176705c480851b7390fa2a2727721dcc774f39ed

Text Editor: incorrect clipping at bottom

Patch T42637 by @donfabio

===================================================================

M       source/blender/editors/space_text/text_draw.c

===================================================================

diff --git a/source/blender/editors/space_text/text_draw.c 
b/source/blender/editors/space_text/text_draw.c
index c8ca4e1..a43d430 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to