[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26295] trunk/blender/source/blender/ editors/space_text: Fix #19580: text editor - current line is dependent on the

Brecht Van Lommel brecht at blender.org
Tue Jan 26 13:12:31 CET 2010


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. @@




More information about the Bf-blender-cvs mailing list