made text editor margin work with different font sizes.
authorCampbell Barton <ideasman42@gmail.com>
Sun, 12 Jul 2009 07:37:25 +0000 (07:37 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 12 Jul 2009 07:37:25 +0000 (07:37 +0000)
also made it draw the width needed, was fixed at 4.

source/blender/editors/space_text/text_draw.c
source/blender/editors/space_text/text_intern.h
source/blender/makesdna/DNA_space_types.h

index adba7ef100a3bdd3c12152724a82158fd8de5a0c..9f8cedd569fe2fe05e0e19c2ce08926bf7f70e52 100644 (file)
@@ -1300,15 +1300,23 @@ void draw_text_main(SpaceText *st, ARegion *ar)
                linecount++;
        }
 
+       text_font_begin(st);
+       st->cwidth= BLF_fixed_width();
+       st->cwidth= MAX2(st->cwidth, 1);
+
        /* draw line numbers background */
        if(st->showlinenrs) {
+               st->linenrs_tot = (int)floor(log10((float)(linecount + st->viewlines))) + 1;
+               x= TXT_OFFSET + TEXTXLOC;
+
                UI_ThemeColor(TH_GRID);
-               glRecti(23, 0, (st->lheight==15)? 63: 59, ar->winy - 2);
+               glRecti((TXT_OFFSET-12), 0, (TXT_OFFSET-5) + TEXTXLOC, ar->winy - 2);
        }
-
-       text_font_begin(st);
-       st->cwidth= BLF_fixed_width();
-       st->cwidth= MAX2(st->cwidth, 1);
+       else {
+               st->linenrs_tot= 0; /* not used */
+               x= TXT_OFFSET;
+       }
+       y= ar->winy-st->lheight;
 
        /* draw cursor */
        draw_cursor(st, ar);
@@ -1316,9 +1324,6 @@ void draw_text_main(SpaceText *st, ARegion *ar)
        /* draw the text */
        UI_ThemeColor(TH_TEXT);
 
-       y= ar->winy-st->lheight;
-       x= (st->showlinenrs)? TXT_OFFSET + TEXTXLOC: TXT_OFFSET;
-
        for(i=0; y>0 && i<st->viewlines && tmp; i++, tmp= tmp->next) {
                if(st->showsyntax && !tmp->format)
                        txt_format_line(st, tmp, 0);
@@ -1330,14 +1335,8 @@ void draw_text_main(SpaceText *st, ARegion *ar)
                        else
                                UI_ThemeColor(TH_TEXT);
 
-                       if(((float)(i + linecount + 1)/10000.0) < 1.0) {
-                               sprintf(linenr, "%4d", i + linecount + 1);
-                               text_font_draw(st, TXT_OFFSET - 7, y, linenr);
-                       }
-                       else {
-                               sprintf(linenr, "%5d", i + linecount + 1);
-                               text_font_draw(st, TXT_OFFSET - 11, y, linenr);
-                       }
+                       sprintf(linenr, "%d", i + linecount + 1);
+                       text_font_draw(st, TXT_OFFSET - 7, y, linenr);
 
                        UI_ThemeColor(TH_TEXT);
                }
index 5ea33e1660d39aade21136fabcf88182f77bce1d..cb425274fc07e1e844df82b1e7f2a13f62416403 100644 (file)
@@ -58,7 +58,7 @@ void text_update_edited(struct Text *text);
 void text_update_character_width(struct SpaceText *st);
 void text_update_cursor_moved(struct SpaceText *st, struct ARegion *ar);
 
-#define TEXTXLOC               38
+#define TEXTXLOC               (st->cwidth * st->linenrs_tot)
 
 #define SUGG_LIST_SIZE 7
 #define SUGG_LIST_WIDTH        20
index 951b12b82febd491b873e4ca69e5ed60d7247be1..cc6987084d04043dd50e4ec3d738ff7017c3fe6d 100644 (file)
@@ -294,7 +294,7 @@ typedef struct SpaceText {
        short flags, menunr;    
 
        short lheight;          /* user preference */
-       short cwidth;           /* runtime computed */
+       char cwidth, linenrs_tot;               /* runtime computed, character width and the number of chars to use when showing line numbers */
        int left;
        int showlinenrs;
        int tabnumber;