From 5f901e2b27c57a218ae743171068f90e176fb132 Mon Sep 17 00:00:00 2001 From: Paulb23 Date: Sun, 3 Apr 2016 14:54:54 +0100 Subject: [PATCH] Fixed insert mode removing first unselected character (cherry picked from commit fe779d4386ac32431ed85b6248b05f018a5db86e) --- scene/gui/text_edit.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index f7dbae9dec6..24269eb515d 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1625,8 +1625,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) @@ -2355,8 +2357,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 @@ -2376,7 +2378,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();