made text editor margin work with different font sizes.

also made it draw the width needed, was fixed at 4.
This commit is contained in:
Campbell Barton
2009-07-12 07:37:25 +00:00
parent 345be5cbbc
commit ba1082444e
3 changed files with 18 additions and 19 deletions

View File

@@ -1300,25 +1300,30 @@ void draw_text_main(SpaceText *st, ARegion *ar)
linecount++;
}
/* draw line numbers background */
if(st->showlinenrs) {
UI_ThemeColor(TH_GRID);
glRecti(23, 0, (st->lheight==15)? 63: 59, ar->winy - 2);
}
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((TXT_OFFSET-12), 0, (TXT_OFFSET-5) + TEXTXLOC, ar->winy - 2);
}
else {
st->linenrs_tot= 0; /* not used */
x= TXT_OFFSET;
}
y= ar->winy-st->lheight;
/* draw cursor */
draw_cursor(st, 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);
}

View 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

View 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;