diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-04-29 22:53:43 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-04-29 22:53:43 +0400 |
commit | 44d81faa432b3b778da10139b652371cfdc7cbb3 (patch) | |
tree | e3b1cc65df2e54a09b11362dfa20b798f446915d /source/blender/blenkernel | |
parent | daae72e17b9f9375c6e33e0c3036784bdf35ed18 (diff) |
patch [#30821] Wiki Quick Hack: Text editor duplicate line
from Justin Dailey (dail)
made this Ctrl+D, to replace Delete.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_text.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/text.c | 23 |
2 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h index 0a94d89a121..b1902c75afb 100644 --- a/source/blender/blenkernel/BKE_text.h +++ b/source/blender/blenkernel/BKE_text.h @@ -96,6 +96,7 @@ void txt_unindent (struct Text *text); void txt_comment (struct Text *text); void txt_indent (struct Text *text); void txt_uncomment (struct Text *text); +void txt_duplicate_line (struct Text *text); int setcurr_tab_spaces (struct Text *text, int space); void txt_add_marker (struct Text *text, struct TextLine *line, int start, int end, const unsigned char color[4], int group, int flags); @@ -169,6 +170,8 @@ int text_check_whitespace(const char ch); #define UNDO_COMMENT 034 #define UNDO_UNCOMMENT 035 +#define UNDO_DUPLICATE 040 + /* Marker flags */ #define TMARK_TEMP 0x01 /* Remove on non-editing events, don't save */ #define TMARK_EDITALL 0x02 /* Edit all markers of the same group as one */ diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index 27501b6a589..31278ab53aa 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -2207,6 +2207,9 @@ void txt_do_undo(Text *text) text->undo_pos--; break; + case UNDO_DUPLICATE: + txt_delete_line(text, text->curl->next); + break; default: //XXX error("Undo buffer error - resetting"); text->undo_pos= -1; @@ -2404,6 +2407,9 @@ void txt_do_redo(Text *text) txt_uncomment(text); } break; + case UNDO_DUPLICATE: + txt_duplicate_line(text); + break; default: //XXX error("Undo buffer error - resetting"); text->undo_pos= -1; @@ -2545,6 +2551,23 @@ static void txt_combine_lines (Text *text, TextLine *linea, TextLine *lineb) txt_clean_text(text); } +void txt_duplicate_line(Text *text) +{ + TextLine *textline; + + if (!text || !text->curl) return; + + if (text->curl == text->sell) { + textline = txt_new_line(text->curl->line); + BLI_insertlinkafter(&text->lines, text->curl, textline); + + txt_make_dirty(text); + txt_clean_text(text); + + if (!undoing) txt_undo_add_op(text, UNDO_DUPLICATE); + } +} + void txt_delete_char(Text *text) { unsigned int c='\n'; |