diff options
author | Ian Thompson <quornian@googlemail.com> | 2008-08-16 18:38:08 +0400 |
---|---|---|
committer | Ian Thompson <quornian@googlemail.com> | 2008-08-16 18:38:08 +0400 |
commit | 310a6e2179a9c55acbe3bdb833ff8420bd6eb216 (patch) | |
tree | 600444f8def0f5f7f5973c4ddb6b2e783d026365 /source/blender/blenkernel | |
parent | d1d1d2b8702230138d4fddbafa63ce1e66a7ea0c (diff) |
Esc removes markers in stages. Temporary markers are removed first (if any) then other markers follow.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_text.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/text.c | 16 |
2 files changed, 14 insertions, 6 deletions
diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h index 0094030e757..a80f3cec6c1 100644 --- a/source/blender/blenkernel/BKE_text.h +++ b/source/blender/blenkernel/BKE_text.h @@ -102,8 +102,8 @@ void txt_copy_clipboard (struct Text *text); 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); diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index db5b568f043..451642c4670 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -2727,9 +2727,10 @@ TextMarker *txt_find_marker_region(Text *text, TextLine *line, int start, int en /* 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 @@ void txt_clear_marker_region(Text *text, TextLine *line, int start, int end, int 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 |