From 0b70603a0ced6c2fb9bca222cb9358773d8eedc9 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 17 Jul 2015 22:07:35 -0400 Subject: [PATCH] Tweak removeWord code to make it work for text editors and make more sense --- indra/llui/lllineeditor.cpp | 6 +++--- indra/llui/lltexteditor.cpp | 24 ++++++++++-------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 57cdb8462..66b8d64ec 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -867,10 +867,10 @@ void LLLineEditor::removeChar() // Remove a word (set of characters up to next space/punctuation) from the text void LLLineEditor::removeWord(bool prev) { - const U32 pos(getCursor()); - if (prev ? pos > 0 : static_cast(pos) < getLength()) + const S32& pos(mCursorPos); + if (prev ? pos > 0 : pos < getLength()) { - U32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos)); + S32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos)); if (new_pos == pos) // Other character we don't jump over new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1); diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 83912db9c..0412c302e 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -1817,10 +1817,10 @@ void LLTextEditor::removeChar() // Remove a word (set of characters up to next space/punctuation) from the text void LLTextEditor::removeWord(bool prev) { - const U32 pos(mCursorPos); - if (prev ? pos > 0 : static_cast(pos) < getLength()) + const S32& pos(mCursorPos); + if (prev ? pos > 0 : pos < getLength()) { - U32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos)); + S32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos)); if (new_pos == pos) // Other character we don't jump over new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1); @@ -2368,6 +2368,13 @@ BOOL LLTextEditor::handleControlKey(const KEY key, const MASK mask) } break; + case KEY_DELETE: + if (getEnabled()) + removeWord(false); + else + handled = false; + break; + default: handled = FALSE; break; @@ -2485,17 +2492,6 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return } break; - case KEY_DELETE: - if (getEnabled() && mask == MASK_CONTROL) - { - removeWord(false); - } - else - { - handled = false; - } - break; - case KEY_RETURN: if (mask == MASK_NONE) {