[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16131] branches/soc-2008-quorn/source/ blender: Esc removes markers in stages.

Ian Thompson quornian at googlemail.com
Sat Aug 16 16:38:09 CEST 2008


Revision: 16131
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16131
Author:   quorn
Date:     2008-08-16 16:38:08 +0200 (Sat, 16 Aug 2008)

Log Message:
-----------
Esc removes markers in stages. Temporary markers are removed first (if any) then other markers follow.

Modified Paths:
--------------
    branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h
    branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c
    branches/soc-2008-quorn/source/blender/src/drawtext.c

Modified: branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h
===================================================================
--- branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h	2008-08-16 12:42:34 UTC (rev 16130)
+++ branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h	2008-08-16 14:38:08 UTC (rev 16131)
@@ -102,8 +102,8 @@
 void	txt_paste_clipboard	(struct Text *text);
 
 void	txt_add_marker						(struct Text *text, struct TextLine *line, int start, int end, char clr[4], int flags);
-void	txt_clear_marker_region				(struct Text *text, struct TextLine *line, int start, int end, int flags);
-void	txt_clear_markers					(struct Text *text, int flags);
+short	txt_clear_marker_region				(struct Text *text, struct TextLine *line, int start, int end, int flags);
+short	txt_clear_markers					(struct Text *text, int flags);
 struct TextMarker	*txt_find_marker		(struct Text *text, struct TextLine *line, int curs, int flags);
 struct TextMarker	*txt_find_marker_region	(struct Text *text, struct TextLine *line, int start, int end, int flags);
 struct TextMarker	*txt_prev_marker		(struct Text *text, struct TextMarker *marker);

Modified: branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c
===================================================================
--- branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c	2008-08-16 12:42:34 UTC (rev 16130)
+++ branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c	2008-08-16 14:38:08 UTC (rev 16131)
@@ -2727,9 +2727,10 @@
 
 /* Clears all markers on the specified line between two points with at least
    the specified flags set. If flags is zero, all markers will be cleared */
-void txt_clear_marker_region(Text *text, TextLine *line, int start, int end, int flags) {
+short txt_clear_marker_region(Text *text, TextLine *line, int start, int end, int flags) {
 	TextMarker *marker, *next;
 	int lineno= txt_get_span(text->lines.first, line);
+	short cleared= 0;
 	
 	for (marker=text->markers.first; marker; marker=next) {
 		next= marker->next;
@@ -2739,22 +2740,29 @@
 		else if (marker->lineno > lineno) break;
 
 		if ((marker->start==marker->end && start<=marker->start && marker->start<=end) ||
-				(marker->start<end && marker->end>start))
+			(marker->start<end && marker->end>start)) {
 			BLI_freelinkN(&text->markers, marker);
+			cleared= 1;
+		}
 	}
+	return cleared;
 }
 
 /* Clears all markers with at least the specified flags set (useful for
    clearing temporary markers) */
-void txt_clear_markers(Text *text, int flags) {
+short txt_clear_markers(Text *text, int flags) {
 	TextMarker *marker, *next;
+	short cleared= 0;
 	
 	for (marker=text->markers.first; marker; marker=next) {
 		next= marker->next;
 
-		if ((marker->flags & flags) == flags)
+		if ((marker->flags & flags) == flags) {
 			BLI_freelinkN(&text->markers, marker);
+			cleared= 1;
+		}
 	}
+	return cleared;
 }
 
 /* Finds the marker at the specified line and cursor position with at least the

Modified: branches/soc-2008-quorn/source/blender/src/drawtext.c
===================================================================
--- branches/soc-2008-quorn/source/blender/src/drawtext.c	2008-08-16 12:42:34 UTC (rev 16130)
+++ branches/soc-2008-quorn/source/blender/src/drawtext.c	2008-08-16 14:38:08 UTC (rev 16131)
@@ -2483,6 +2483,12 @@
 				draw= 1;
 				swallow= 1;
 			}
+		} else if (evnt==ESCKEY) {
+			if (txt_clear_markers(text, TMARK_TEMP)) swallow= 1;
+			else if (txt_clear_markers(text, 0)) swallow= 1;
+			else return 0;
+			evnt= ascii= val= 0;
+			draw= 1;
 		}
 		if (!swallow) return 0;
 	}
@@ -3113,9 +3119,6 @@
 			do_draw= 1;
 			pop_space_text(st);
 			break;
-		case ESCKEY:
-			txt_clear_markers(text, TMARK_TEMP);
-			break;
 		case BACKSPACEKEY:
 			if (text && text->id.lib) {
 				error_libdata();





More information about the Bf-blender-cvs mailing list