Fix #19580: text editor - current line is dependent on the
[blender-staging.git] / source / blender / editors / space_text / text_draw.c
index 9721fbc2b9c053ea3bceb9b11cf93ce49b006b00..b74e1f6cfb2301a3d7d7a90ea8c8d24ae8409b54 100644 (file)
@@ -43,6 +43,7 @@
 #include "DNA_screen_types.h"
 #include "DNA_userdef_types.h"
 
+#include "BKE_context.h"
 #include "BKE_global.h"
 #include "BKE_main.h"
 #include "BKE_suggestions.h"
@@ -425,60 +426,6 @@ static void format_draw_color(char formatchar)
        }
 }
 
-/*********************** utilities ************************/
-
-int text_check_bracket(char ch)
-{
-       int a;
-       char opens[] = "([{";
-       char close[] = ")]}";
-       
-       for(a=0; a<3; a++) {
-               if(ch==opens[a])
-                       return a+1;
-               else if(ch==close[a])
-                       return -(a+1);
-       }
-       return 0;
-}
-
-int text_check_delim(char ch) 
-{
-       int a;
-       char delims[] = "():\"\' ~!%^&*-+=[]{};/<>|.#\t,";
-       
-       for(a=0; a<28; a++) {
-               if(ch==delims[a])
-                       return 1;
-       }
-       return 0;
-}
-
-int text_check_digit(char ch)
-{
-       if(ch < '0') return 0;
-       if(ch <= '9') return 1;
-       return 0;
-}
-
-int text_check_identifier(char ch)
-{
-       if(ch < '0') return 0;
-       if(ch <= '9') return 1;
-       if(ch < 'A') return 0;
-       if(ch <= 'Z' || ch == '_') return 1;
-       if(ch < 'a') return 0;
-       if(ch <= 'z') return 1;
-       return 0;
-}
-
-int text_check_whitespace(char ch)
-{
-       if(ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n')
-               return 1;
-       return 0;
-}
-
 /************************** draw text *****************************/
 
 /***********************/ /*
@@ -704,8 +651,10 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar, rcti *scroll)
        blank_lines = st->viewlines / 2;
        
        /* nicer code: use scroll rect for entire bar */
-       scroll->xmin= 5;
-       scroll->xmax= 17;
+       //scroll->xmin= 5;
+       //scroll->xmax= 17;
+       scroll->xmin= ar->winx - 17;
+       scroll->xmax= ar->winx - 5;
        scroll->ymin= 4;
        scroll->ymax= 4+pix_available;
        
@@ -806,15 +755,6 @@ static void draw_textscroll(SpaceText *st, ARegion *ar, rcti *scroll)
        char col[3];
        float rad;
        
-//     UI_ThemeColorShade(TH_SHADE1, -20);
-//     glRecti(2, 2, 20, ar->winy-6);
-//     uiEmboss(2, 2, 20, ar->winy-6, 1);
-
-//     UI_ThemeColor(TH_SHADE1);
-//     glRecti(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax);
-
-//     uiEmboss(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax, st->flags & ST_SCROLL_SELECT);
-       
        uiWidgetScrollDraw(&wcol, scroll, &st->txtbar, (st->flags & ST_SCROLL_SELECT)?UI_SCROLL_PRESSED:0);
 
        uiSetRoundBox(15);
@@ -1372,10 +1312,19 @@ void text_update_character_width(SpaceText *st)
 
 /* Moves the view to the cursor location,
   also used to make sure the view isnt outside the file */
-void text_update_cursor_moved(SpaceText *st, ARegion *ar)
+void text_update_cursor_moved(bContext *C)
 {
+       ScrArea *sa= CTX_wm_area(C);
+       SpaceText *st= CTX_wm_space_text(C);
        Text *text= st->text;
-       int i, x;
+       ARegion *ar;
+       int i, x, winx= 0;
+
+       if(!st) return;
+
+       for(ar=sa->regionbase.first; ar; ar= ar->next)
+               if(ar->regiontype==RGN_TYPE_WINDOW)
+                       winx= ar->winx;
 
        if(!text || !text->curl) return;
 
@@ -1391,8 +1340,8 @@ void text_update_cursor_moved(SpaceText *st, ARegion *ar)
        else {
                x= text_draw(st, text->sell->line, st->left, text->selc, 0, 0, 0, NULL);
 
-               if(x==0 || x>ar->winx)
-                       st->left= text->curc-0.5*(ar->winx)/st->cwidth;
+               if(x==0 || x>winx)
+                       st->left= text->curc-0.5*winx/st->cwidth;
        }
 
        if(st->top < 0) st->top= 0;