Browse Source

Merge pull request #4231 from Paulb23/selection_undo_fix

Fixed undoing twice when removing selection and 'complex' typo in method name
Rémi Verschelde 9 years ago
parent
commit
8688723923
2 changed files with 17 additions and 12 deletions
  1. 15 10
      scene/gui/text_edit.cpp
  2. 2 2
      scene/gui/text_edit.h

+ 15 - 10
scene/gui/text_edit.cpp

@@ -1132,7 +1132,7 @@ void TextEdit::_consume_pair_symbol(CharType ch) {
 
 
 		int new_column,new_line;
 		int new_column,new_line;
 
 
-		_begin_compex_operation();
+		_begin_complex_operation();
 		_insert_text(get_selection_from_line(), get_selection_from_column(),
 		_insert_text(get_selection_from_line(), get_selection_from_column(),
 			     ch_single,
 			     ch_single,
 			     &new_line, &new_column);
 			     &new_line, &new_column);
@@ -1145,7 +1145,7 @@ void TextEdit::_consume_pair_symbol(CharType ch) {
 			     get_selection_to_column() + to_col_offset,
 			     get_selection_to_column() + to_col_offset,
 			     ch_single_pair,
 			     ch_single_pair,
 			     &new_line,&new_column);
 			     &new_line,&new_column);
-		_end_compex_operation();
+		_end_complex_operation();
 
 
 		cursor_set_line(get_selection_to_line());
 		cursor_set_line(get_selection_to_line());
 		cursor_set_column(get_selection_to_column() + to_col_offset);
 		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
 								// remove the old character if in insert mode
 								if (insert_mode) {
 								if (insert_mode) {
-									_begin_compex_operation();
+									_begin_complex_operation();
 
 
 									// make sure we don't try and remove empty space
 									// make sure we don't try and remove empty space
 									if (cursor.column < get_line(cursor.line).length()) {
 									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);
 								_insert_text_at_cursor(chr);
 
 
 								if (insert_mode) {
 								if (insert_mode) {
-									_end_compex_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_line(selection.from_line);
 							cursor_set_column(selection.from_column);
 							cursor_set_column(selection.from_column);
-							_begin_compex_operation();
+							_begin_complex_operation();
 							_remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column);
 							_remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column);
 							_insert_text_at_cursor(txt);
 							_insert_text_at_cursor(txt);
-							_end_compex_operation();
+							_end_complex_operation();
 							selection.active=true;
 							selection.active=true;
 							selection.from_column=sel_column;
 							selection.from_column=sel_column;
 							selection.from_line=sel_line;
 							selection.from_line=sel_line;
@@ -1747,6 +1747,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
 				}
 				}
 				if (clear) {
 				if (clear) {
 
 
+					_begin_complex_operation();
 					selection.active=false;
 					selection.active=false;
 					update();
 					update();
 					_remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column);
 					_remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column);
@@ -2395,7 +2396,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
 
 
 					// remove the old character if in insert mode and no selection
 					// remove the old character if in insert mode and no selection
 					if (insert_mode && !had_selection) {
 					if (insert_mode && !had_selection) {
-						_begin_compex_operation();
+						_begin_complex_operation();
 
 
 						// make sure we don't try and remove empty space
 						// make sure we don't try and remove empty space
 						if (cursor.column < get_line(cursor.line).length()) {
 						if (cursor.column < get_line(cursor.line).length()) {
@@ -2415,7 +2416,11 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
 					}
 					}
 
 
 					if (insert_mode && !had_selection) {
 					if (insert_mode && !had_selection) {
-						_end_compex_operation();
+						_end_complex_operation();
+					}
+
+					if (selection.active != had_selection) {
+						_end_complex_operation();
 					}
 					}
 					accept_event();
 					accept_event();
 				} else {
 				} else {
@@ -3608,12 +3613,12 @@ void TextEdit::clear_undo_history() {
 
 
 }
 }
 
 
-void TextEdit::_begin_compex_operation() {
+void TextEdit::_begin_complex_operation() {
 	_push_current_op();
 	_push_current_op();
 	next_operation_is_complex=true;
 	next_operation_is_complex=true;
 }
 }
 
 
-void TextEdit::_end_compex_operation() {
+void TextEdit::_end_complex_operation() {
 
 
 	_push_current_op();
 	_push_current_op();
 	ERR_FAIL_COND(undo_stack.size() == 0);
 	ERR_FAIL_COND(undo_stack.size() == 0);

+ 2 - 2
scene/gui/text_edit.h

@@ -265,8 +265,8 @@ class TextEdit : public Control  {
 	void _cursor_changed_emit();
 	void _cursor_changed_emit();
 	void _text_changed_emit();
 	void _text_changed_emit();
 
 
-	void _begin_compex_operation();
-	void _end_compex_operation();
+	void _begin_complex_operation();
+	void _end_complex_operation();
 	void _push_current_op();
 	void _push_current_op();
 
 
 	/* super internal api, undo/redo builds on it */
 	/* super internal api, undo/redo builds on it */