diff options
author | Paul Batty <Paulb23@users.noreply.github.com> | 2016-04-06 07:36:29 +0100 |
---|---|---|
committer | RĂ©mi Verschelde <remi@verschelde.fr> | 2016-04-06 08:36:29 +0200 |
commit | 646e0897829d7baf4b982c59d4bddade85199665 (patch) | |
tree | bb5f0c13904dd378c6db41ee2bfe976ffaa7010b /scene/gui | |
parent | f303e3483d2a160a9841a3b50f21b86a62a7b4ec (diff) |
Fixed text edit undo and redo operation interaction
Diffstat (limited to 'scene/gui')
-rw-r--r-- | scene/gui/text_edit.cpp | 24 | ||||
-rw-r--r-- | scene/gui/text_edit.h | 5 |
2 files changed, 15 insertions, 14 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 425a88fc0e..d48b8995eb 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1132,7 +1132,7 @@ void TextEdit::_consume_pair_symbol(CharType ch) { int new_column,new_line; - _begin_complex_operation(); + begin_complex_operation(); _insert_text(get_selection_from_line(), get_selection_from_column(), ch_single, &new_line, &new_column); @@ -1145,7 +1145,7 @@ void TextEdit::_consume_pair_symbol(CharType ch) { get_selection_to_column() + to_col_offset, ch_single_pair, &new_line,&new_column); - _end_complex_operation(); + end_complex_operation(); cursor_set_line(get_selection_to_line()); cursor_set_column(get_selection_to_column() + to_col_offset); @@ -1599,7 +1599,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { // remove the old character if in insert mode if (insert_mode) { - _begin_complex_operation(); + begin_complex_operation(); // make sure we don't try and remove empty space if (cursor.column < get_line(cursor.line).length()) { @@ -1610,7 +1610,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { _insert_text_at_cursor(chr); if (insert_mode) { - _end_complex_operation(); + end_complex_operation(); } } } @@ -1686,10 +1686,10 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { cursor_set_line(selection.from_line); cursor_set_column(selection.from_column); - _begin_complex_operation(); + begin_complex_operation(); _remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column); _insert_text_at_cursor(txt); - _end_complex_operation(); + end_complex_operation(); selection.active=true; selection.from_column=sel_column; selection.from_line=sel_line; @@ -1747,7 +1747,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } if (clear) { - _begin_complex_operation(); + begin_complex_operation(); selection.active=false; update(); _remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column); @@ -2396,7 +2396,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { // remove the old character if in insert mode and no selection if (insert_mode && !had_selection) { - _begin_complex_operation(); + begin_complex_operation(); // make sure we don't try and remove empty space if (cursor.column < get_line(cursor.line).length()) { @@ -2416,11 +2416,11 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } if (insert_mode && !had_selection) { - _end_complex_operation(); + end_complex_operation(); } if (selection.active != had_selection) { - _end_complex_operation(); + end_complex_operation(); } accept_event(); } else { @@ -3613,12 +3613,12 @@ void TextEdit::clear_undo_history() { } -void TextEdit::_begin_complex_operation() { +void TextEdit::begin_complex_operation() { _push_current_op(); next_operation_is_complex=true; } -void TextEdit::_end_complex_operation() { +void TextEdit::end_complex_operation() { _push_current_op(); ERR_FAIL_COND(undo_stack.size() == 0); diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 43a24bf3c0..467c49f51b 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -265,8 +265,6 @@ class TextEdit : public Control { void _cursor_changed_emit(); void _text_changed_emit(); - void _begin_complex_operation(); - void _end_complex_operation(); void _push_current_op(); /* super internal api, undo/redo builds on it */ @@ -318,6 +316,9 @@ public: //void delete_char(); //void delete_line(); + void begin_complex_operation(); + void end_complex_operation(); + void set_text(String p_text); void insert_text_at_cursor(const String& p_text); void insert_at(const String& p_text, int at); |