Merge pull request #4218 from Paulb23/text_edit_insert_mode

Fixed insert mode interaction with selection and autocomplete
This commit is contained in:
Rémi Verschelde 2016-04-03 19:29:26 +02:00
commit e971112f4a

View file

@ -1596,7 +1596,22 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
if(auto_brace_completion_enabled && _is_pair_symbol(chr[0])) {
_consume_pair_symbol(chr[0]);
} else {
// remove the old character if in insert mode
if (insert_mode) {
_begin_compex_operation();
// make sure we don't try and remove empty space
if (cursor.column < get_line(cursor.line).length()) {
_remove_text(cursor.line, cursor.column, cursor.line, cursor.column + 1);
}
}
_insert_text_at_cursor(chr);
if (insert_mode) {
_end_compex_operation();
}
}
}
@ -1625,8 +1640,10 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
k.mod.shift=false;
}
// stuff to do when selection is active..
// save here for insert mode, just in case it is cleared in the following section
bool had_selection = selection.active;
// stuff to do when selection is active..
if (selection.active) {
if (readonly)
@ -2376,8 +2393,8 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
if (readonly)
break;
// remove the old character if in insert mode
if (insert_mode) {
// remove the old character if in insert mode and no selection
if (insert_mode && !had_selection) {
_begin_compex_operation();
// make sure we don't try and remove empty space
@ -2397,7 +2414,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
_insert_text_at_cursor(chr);
}
if (insert_mode) {
if (insert_mode && !had_selection) {
_end_compex_operation();
}
accept_event();