Revision: 26295
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26295
Author:   blendix
Date:     2010-01-26 13:12:31 +0100 (Tue, 26 Jan 2010)

Log Message:
-----------
Fix #19580: text editor - current line is dependent on the
text datablock, not the editor.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_text/space_text.c
    trunk/blender/source/blender/editors/space_text/text_draw.c
    trunk/blender/source/blender/editors/space_text/text_intern.h
    trunk/blender/source/blender/editors/space_text/text_ops.c
    trunk/blender/source/blender/editors/space_text/text_python.c

Modified: trunk/blender/source/blender/editors/space_text/space_text.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/space_text.c        
2010-01-26 11:51:28 UTC (rev 26294)
+++ trunk/blender/source/blender/editors/space_text/space_text.c        
2010-01-26 12:12:31 UTC (rev 26295)
@@ -127,14 +127,6 @@
                        if(!wmn->reference || wmn->reference == st->text) {
                                ED_area_tag_redraw(sa);
 
-                               if(wmn->data == ND_CURSOR || wmn->action == 
NA_EDITED) {
-                                       ARegion *ar;
-
-                                       for(ar=sa->regionbase.first; ar; ar= 
ar->next)
-                                               
if(ar->regiontype==RGN_TYPE_WINDOW)
-                                                       
text_update_cursor_moved(st, ar);
-                               }
-
                                if(wmn->action == NA_EDITED)
                                        if(st->text)
                                                text_update_edited(st->text);

Modified: trunk/blender/source/blender/editors/space_text/text_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_draw.c 2010-01-26 
11:51:28 UTC (rev 26294)
+++ trunk/blender/source/blender/editors/space_text/text_draw.c 2010-01-26 
12:12:31 UTC (rev 26295)
@@ -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"
@@ -1311,11 +1312,20 @@
 
 /* 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;
 
        text_update_character_width(st);
@@ -1330,8 +1340,8 @@
        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;

Modified: trunk/blender/source/blender/editors/space_text/text_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_intern.h       
2010-01-26 11:51:28 UTC (rev 26294)
+++ trunk/blender/source/blender/editors/space_text/text_intern.h       
2010-01-26 12:12:31 UTC (rev 26295)
@@ -56,7 +56,7 @@
 void text_update_line_edited(struct Text *text, struct TextLine *line);
 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);
+void text_update_cursor_moved(struct bContext *C);
 
 #define TEXTXLOC               (st->cwidth * st->linenrs_tot)
 

Modified: trunk/blender/source/blender/editors/space_text/text_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_ops.c  2010-01-26 
11:51:28 UTC (rev 26294)
+++ trunk/blender/source/blender/editors/space_text/text_ops.c  2010-01-26 
12:12:31 UTC (rev 26295)
@@ -307,6 +307,7 @@
 #endif
 
        text_update_edited(text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -337,10 +338,12 @@
        if(st) {
                if(text->id.prev) {
                        st->text = text->id.prev;
+                       text_update_cursor_moved(C);
                        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
                }
                else if(text->id.next) {
                        st->text = text->id.next;
+                       text_update_cursor_moved(C);
                        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
                }
        }
@@ -378,6 +381,7 @@
                text->name= NULL;
        }
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -447,6 +451,7 @@
 
        txt_write_file(text, op->reports);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -482,6 +487,7 @@
 
        txt_write_file(text, op->reports);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -720,7 +726,7 @@
 
        MEM_freeN(buf);
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        /* run the script while editing, evil but useful */
@@ -789,7 +795,7 @@
        txt_copy_clipboard(text);
        txt_delete_selected(text);
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        /* run the script while editing, evil but useful */
@@ -826,7 +832,7 @@
 
        text_update_edited(text);
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -856,7 +862,7 @@
 
                text_update_edited(text);
 
-               WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+               text_update_cursor_moved(C);
                WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
                return OPERATOR_FINISHED;
@@ -897,7 +903,7 @@
                text_update_line_edited(text, text->curl);
        }
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_CANCELLED;
@@ -926,6 +932,7 @@
                comment(text);
                text_update_edited(text);
 
+               text_update_cursor_moved(C);
                WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
                return OPERATOR_FINISHED;
        }
@@ -956,6 +963,7 @@
                uncomment(text);
                text_update_edited(text);
 
+               text_update_cursor_moved(C);
                WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
                return OPERATOR_FINISHED;
@@ -1097,7 +1105,7 @@
        }
 
        text_update_edited(text);
-
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1126,6 +1134,7 @@
 
        txt_sel_all(text);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1151,6 +1160,7 @@
 
        txt_sel_line(text);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1186,6 +1196,7 @@
                txt_move_to(text, mrk->lineno, mrk->end, 1);
        }
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1221,6 +1232,7 @@
                txt_move_to(text, mrk->lineno, mrk->end, 1);
        }
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1246,6 +1258,7 @@
 
        txt_clear_markers(text, 0, 0);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1519,7 +1532,7 @@
                        break;
        }
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -1584,6 +1597,7 @@
 
        txt_move_toline(text, line-1, 0);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
 
        return OPERATOR_FINISHED;
@@ -1630,7 +1644,7 @@
 
        text_update_line_edited(text, text->curl);
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        /* run the script while editing, evil but useful */
@@ -2057,6 +2071,7 @@
 
                set_cursor_to_pos(st, ar, event->mval[0], 
event->mval[1]<0?0:ar->winy, 1);
 
+               text_update_cursor_moved(C);
                WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
        } 
        else if(!st->wordwrap && (event->mval[0]<0 || event->mval[0]>ar->winx)) 
{
@@ -2065,12 +2080,14 @@
                
                set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 1);
                
+               text_update_cursor_moved(C);
                WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
                // XXX PIL_sleep_ms(10);
        } 
        else {
                set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 1);
 
+               text_update_cursor_moved(C);
                WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
 
                scu->old[0]= event->mval[0];
@@ -2098,6 +2115,7 @@
        if(scu->sell!=linep2 || scu->selc!=charp2)
                txt_undo_add_toop(st->text, UNDO_STO, scu->sell, scu->selc, 
linep2, charp2);
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
 
        MEM_freeN(scu);
@@ -2210,6 +2228,7 @@
        txt_move_toline(text, jump_to-1, 0);
        last_jump= time;
 
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
 
        return OPERATOR_FINISHED;
@@ -2255,7 +2274,7 @@
 
        text_update_line_edited(text, text->curl);
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 
        return OPERATOR_FINISHED;
@@ -2338,6 +2357,7 @@
                                                MEM_freeN(text->curl->format);
                                                text->curl->format= NULL;
                                        }
+                                       text_update_cursor_moved(C);
                                        WM_event_add_notifier(C, 
NC_TEXT|NA_EDITED, text);
                                }
                                else if(mode==TEXT_MARK_ALL) {
@@ -2350,6 +2370,7 @@
                                        }
 
                                        txt_add_marker(text, text->curl, 
text->curc, text->selc, color, TMARK_GRP_FINDALL, TMARK_EDITALL);
+                                       text_update_cursor_moved(C);
                                        WM_event_add_notifier(C, 
NC_TEXT|NA_EDITED, text);
                                }
                        }
@@ -2359,6 +2380,7 @@
 
                /* Find next */
                if(txt_find_string(text, st->findstr, flags & ST_FIND_WRAP)) {
+                       text_update_cursor_moved(C);
                        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
                }
                else if(flags & ST_FIND_ALL) {
@@ -2369,6 +2391,7 @@
                        else
                                text= st->text= G.main->text.first;
                        txt_move_toline(text, 0, 0);
+                       text_update_cursor_moved(C);
                        WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
                        first= 1;
                }
@@ -2679,7 +2702,7 @@
 
        text_update_edited(text);
 
-       WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+       text_update_cursor_moved(C);
        WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
 }
 

Modified: trunk/blender/source/blender/editors/space_text/text_python.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_python.c       
2010-01-26 11:51:28 UTC (rev 26294)
+++ trunk/blender/source/blender/editors/space_text/text_python.c       
2010-01-26 12:12:31 UTC (rev 26295)
@@ -401,6 +401,7 @@
                        if(marker) {
                                txt_move_to(text, marker->lineno, 
marker->start, 0);
                                txt_move_to(text, marker->lineno, marker->end, 
1);
+                               // XXX text_update_cursor_moved(C);

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to