aboutsummaryrefslogtreecommitdiff
path: root/src/Text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text.cpp')
-rw-r--r--src/Text.cpp45
1 files changed, 28 insertions, 17 deletions
diff --git a/src/Text.cpp b/src/Text.cpp
index 23dfb5b..3790c85 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -129,6 +129,21 @@ namespace QuickMedia
{
return characterSize;
}
+
+ void Text::replace(size_t start_index, size_t length, const sf::String &insert_str) {
+ int string_diff = (int)insert_str.getSize() - (int)length;
+ str.replace(start_index, length, insert_str);
+ dirty = true;
+ dirtyText = true;
+ if(caretIndex >= (int)start_index) {
+ caretIndex += string_diff;
+ dirtyCaret = true;
+ }
+ }
+
+ int Text::getCaretIndex() const {
+ return caretIndex;
+ }
void Text::setFillColor(sf::Color color)
{
@@ -800,17 +815,21 @@ namespace QuickMedia
}
else if(event.key.code == sf::Keyboard::BackSpace && caretIndex > 0)
{
- auto strBefore = str.substring(0, caretIndex - 1);
- auto strAfter = str.substring(caretIndex);
+ str.erase(caretIndex - 1, 1);
--caretIndex;
- setString(strBefore + strAfter);
+ dirty = true;
+ dirtyText = true;
dirtyCaret = true;
}
else if(event.key.code == sf::Keyboard::Delete && !caretAtEnd)
{
- auto strBefore = str.substring(0, caretIndex);
- auto strAfter = str.substring(caretIndex + 1);
- setString(strBefore + strAfter);
+ str.erase(caretIndex, 1);
+ dirty = true;
+ dirtyText = true;
+ }
+ else if(event.key.code == sf::Keyboard::D && event.key.control)
+ {
+ setString("");
}
else if(event.key.code == sf::Keyboard::Up)
{
@@ -835,11 +854,7 @@ namespace QuickMedia
if(caretAtEnd)
str += '\n';
else
- {
- auto strBefore = str.substring(0, caretIndex);
- auto strAfter = str.substring(caretIndex);
- str = strBefore + '\n' + strAfter;
- }
+ str.insert(caretIndex, '\n');
++caretIndex;
dirty = true;
@@ -858,7 +873,7 @@ namespace QuickMedia
{
stringToAdd = sf::Clipboard::getString();
}
- else if(event.text.unicode >= 32 || (event.text.unicode == 9 && !single_line_edit)) // 9 == tab
+ else if(event.text.unicode >= 32 || (event.text.unicode == '\t' && !single_line_edit))
stringToAdd = event.text.unicode;
else
return;
@@ -866,11 +881,7 @@ namespace QuickMedia
if(caretAtEnd)
str += stringToAdd;
else
- {
- auto strBefore = str.substring(0, caretIndex);
- auto strAfter = str.substring(caretIndex);
- str = strBefore + stringToAdd + strAfter;
- }
+ str.insert(caretIndex, stringToAdd);
caretIndex += stringToAdd.getSize();
dirty = true;