summaryrefslogtreecommitdiff
path: root/src/interface/Textbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/Textbox.cpp')
-rw-r--r--src/interface/Textbox.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/interface/Textbox.cpp b/src/interface/Textbox.cpp
index f190322..29e36a3 100644
--- a/src/interface/Textbox.cpp
+++ b/src/interface/Textbox.cpp
@@ -254,17 +254,21 @@ void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
{
case KEY_HOME:
cursor = 0;
+ ClearSelection();
break;
case KEY_END:
cursor = backingText.length();
+ ClearSelection();
break;
case KEY_LEFT:
if(cursor > 0)
cursor--;
+ ClearSelection();
break;
case KEY_RIGHT:
if(cursor < backingText.length())
cursor++;
+ ClearSelection();
break;
case KEY_DELETE:
if(HasSelection())
@@ -283,6 +287,7 @@ void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
backingText.erase(cursor, 1);
changed = true;
}
+ ClearSelection();
break;
case KEY_BACKSPACE:
if(HasSelection())
@@ -307,6 +312,7 @@ void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
}
changed = true;
}
+ ClearSelection();
break;
}
if(CharacterValid(character))
@@ -332,8 +338,8 @@ void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
}
cursor++;
changed = true;
+ ClearSelection();
}
- ClearSelection();
}
catch(std::out_of_range &e)
{
@@ -350,8 +356,8 @@ void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
if(!backingText.length())
backingText = "0";
}
- if(cursor >= backingText.length())
- cursor = backingText.length()-1;
+ if(cursor > backingText.length())
+ cursor = backingText.length();
if(changed)
{
if(masked)