summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
authorStefan Dombrowski <stefan@uni-bonn.de>2010-08-31 23:15:04 +0200
committerStefan Dombrowski <stefan@uni-bonn.de>2010-08-31 23:15:04 +0200
commitfe08ffb9047bed67474aa8519051a0d4dcab98c5 (patch)
tree09d913c3259be04d514794cd420a9a450fc4a205 /src/gui/widgets
parentf63a221850062da5b676c7dce258405f59486530 (diff)
downloadmana-fe08ffb9047bed67474aa8519051a0d4dcab98c5.tar.gz
mana-fe08ffb9047bed67474aa8519051a0d4dcab98c5.tar.bz2
mana-fe08ffb9047bed67474aa8519051a0d4dcab98c5.tar.xz
mana-fe08ffb9047bed67474aa8519051a0d4dcab98c5.zip
Fixing auto complete and chat history
Reviewed-by: Jaxad0127
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/textfield.cpp18
-rw-r--r--src/gui/widgets/textfield.h4
2 files changed, 8 insertions, 14 deletions
diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp
index 3e02be98..cffda1e3 100644
--- a/src/gui/widgets/textfield.cpp
+++ b/src/gui/widgets/textfield.cpp
@@ -276,10 +276,8 @@ void TextField::keyPressed(gcn::KeyEvent &keyEvent)
case Key::ENTER:
if (mHistory)
{
- mHistory->toEnd();
-
// If the input is different from previous, put it in the history
- if (mHistory->empty() || !mHistory->matchesEntry(getText()))
+ if (mHistory->empty() || !mHistory->matchesLastEntry(getText()))
{
mHistory->addEntry(getText());
}
@@ -317,23 +315,23 @@ void TextField::autoComplete()
{
if (mAutoComplete && mText.size() > 0)
{
- int caretPos = getCaretPosition();
+ const int caretPos = getCaretPosition();
int startName = 0;
const std::string inputText = getText();
std::string name = inputText.substr(0, caretPos);
std::string newName("");
- for (int f = caretPos - 1; f > -1; f --)
+ for (int f = caretPos - 1; f > -1; f--)
{
if (isWordSeparator(inputText[f]))
{
startName = f + 1;
- name = inputText.substr(f + 1, caretPos - f);
+ name = inputText.substr(f + 1, caretPos - startName);
break;
}
}
- if (caretPos - 1 + 1 != startName)
+ if (caretPos == startName)
return;
@@ -375,11 +373,7 @@ void TextField::autoComplete()
+ inputText.substr(caretPos, inputText.length()
- caretPos));
- if (startName > 0)
- setCaretPosition(caretPos - name.length() + newName.length()
- + 1);
- else
- setCaretPosition(caretPos - name.length() + newName.length());
+ setCaretPosition(caretPos - name.length() + newName.length());
}
}
}
diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h
index 6e50f1e9..1963f9fa 100644
--- a/src/gui/widgets/textfield.h
+++ b/src/gui/widgets/textfield.h
@@ -57,8 +57,8 @@ struct TextHistory {
void addEntry(const std::string &text)
{ history.push_back(text); }
- bool matchesEntry(const std::string &text)
- { return (*current) == text; }
+ bool matchesLastEntry(const std::string &text)
+ { return history.back() == text; }
};
class AutoCompleteLister {