[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