diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-04-05 16:22:33 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-04-05 16:22:33 +0300 |
commit | ad1ea9a427e3543a43ca2589f87f0c94b9be03ca (patch) | |
tree | 267fcc16524cd1336d2a55d08a497025a552d825 /source/blender/blenkernel/BKE_text.h | |
parent | 79c3c5689416014afd4fe417fac404c34b7a6cf0 (diff) |
Undo: split text undo steps out of the data-block
This moves undo storage into a separate struct which is passed
in from the undo system.
Diffstat (limited to 'source/blender/blenkernel/BKE_text.h')
-rw-r--r-- | source/blender/blenkernel/BKE_text.h | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h index b3b1ad23b32..98db06752c8 100644 --- a/source/blender/blenkernel/BKE_text.h +++ b/source/blender/blenkernel/BKE_text.h @@ -40,6 +40,7 @@ extern "C" { struct Main; struct Text; struct TextLine; +struct TextUndoBuf; void BKE_text_free_lines (struct Text *text); void BKE_text_free (struct Text *text); @@ -55,8 +56,8 @@ struct Text *BKE_text_load (struct Main *bmain, const char *file, const char void BKE_text_copy_data(struct Main *bmain, struct Text *ta_dst, const struct Text *ta_src, const int flag); struct Text *BKE_text_copy (struct Main *bmain, const struct Text *ta); void BKE_text_make_local (struct Main *bmain, struct Text *text, const bool lib_local); -void BKE_text_clear (struct Text *text); -void BKE_text_write (struct Text *text, const char *str); +void BKE_text_clear (struct Text *text, struct TextUndoBuf *utxt); +void BKE_text_write (struct Text *text, struct TextUndoBuf *utxt, const char *str); int BKE_text_file_modified_check(struct Text *text); void BKE_text_file_modified_ignore(struct Text *text); @@ -83,29 +84,29 @@ void txt_move_eol (struct Text *text, const bool sel); void txt_move_toline (struct Text *text, unsigned int line, const bool sel); void txt_move_to (struct Text *text, unsigned int line, unsigned int ch, const bool sel); void txt_pop_sel (struct Text *text); -void txt_delete_char (struct Text *text); -void txt_delete_word (struct Text *text); -void txt_delete_selected (struct Text *text); +void txt_delete_char (struct Text *text, struct TextUndoBuf *utxt); +void txt_delete_word (struct Text *text, struct TextUndoBuf *utxt); +void txt_delete_selected (struct Text *text, struct TextUndoBuf *utxt); void txt_sel_all (struct Text *text); void txt_sel_clear (struct Text *text); void txt_sel_line (struct Text *text); char *txt_sel_to_buf (struct Text *text); -void txt_insert_buf (struct Text *text, const char *in_buffer); -void txt_undo_add_op (struct Text *text, int op); -void txt_do_undo (struct Text *text); -void txt_do_redo (struct Text *text); -void txt_split_curline (struct Text *text); -void txt_backspace_char (struct Text *text); -void txt_backspace_word (struct Text *text); -bool txt_add_char (struct Text *text, unsigned int add); -bool txt_add_raw_char (struct Text *text, unsigned int add); -bool txt_replace_char (struct Text *text, unsigned int add); -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_move_lines (struct Text *text, const int direction); -void txt_duplicate_line (struct Text *text); +void txt_insert_buf (struct Text *text, struct TextUndoBuf *utxt, const char *in_buffer); +void txt_undo_add_op (struct Text *text, struct TextUndoBuf *utxt, int op); +void txt_do_undo (struct Text *text, struct TextUndoBuf *utxt); +void txt_do_redo (struct Text *text, struct TextUndoBuf *utxt); +void txt_split_curline (struct Text *text, struct TextUndoBuf *utxt); +void txt_backspace_char (struct Text *text, struct TextUndoBuf *utxt); +void txt_backspace_word (struct Text *text, struct TextUndoBuf *utxt); +bool txt_add_char (struct Text *text, struct TextUndoBuf *utxt, unsigned int add); +bool txt_add_raw_char (struct Text *text, struct TextUndoBuf *utxt, unsigned int add); +bool txt_replace_char (struct Text *text, struct TextUndoBuf *utxt, unsigned int add); +void txt_unindent (struct Text *text, struct TextUndoBuf *utxt); +void txt_comment (struct Text *text, struct TextUndoBuf *utxt); +void txt_indent (struct Text *text, struct TextUndoBuf *utxt); +void txt_uncomment (struct Text *text, struct TextUndoBuf *utxt); +void txt_move_lines (struct Text *text, struct TextUndoBuf *utxt, const int direction); +void txt_duplicate_line (struct Text *text, struct TextUndoBuf *utxt); int txt_setcurr_tab_spaces(struct Text *text, int space); bool txt_cursor_is_line_start(struct Text *text); bool txt_cursor_is_line_end(struct Text *text); @@ -135,6 +136,11 @@ enum { TXT_MOVE_LINE_DOWN = 1 }; +typedef struct TextUndoBuf { + char *buf; + int pos, len; +} TextUndoBuf; + #ifdef __cplusplus } #endif |