summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/chatwindow.cpp3
-rw-r--r--src/utils/stringutils.cpp18
-rw-r--r--src/utils/stringutils.h3
3 files changed, 22 insertions, 2 deletions
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp
index 0f42fb1b6..639125739 100644
--- a/src/gui/chatwindow.cpp
+++ b/src/gui/chatwindow.cpp
@@ -1195,8 +1195,7 @@ std::string ChatWindow::autoComplete(std::vector<std::string> &names,
{
if (newName != "")
{
- toLower(newName);
- newName = findSameSubstring(name, newName);
+ newName = findSameSubstringI(*i, newName);
}
else
{
diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp
index f3aed5276..62564e0e0 100644
--- a/src/utils/stringutils.cpp
+++ b/src/utils/stringutils.cpp
@@ -174,6 +174,24 @@ const std::string findSameSubstring(const std::string &str1,
return str1.substr(0, minLength);
}
+const std::string findSameSubstringI(const std::string &s1,
+ const std::string &s2)
+{
+ std::string str1 = s1;
+ std::string str2 = s2;
+ toLower(str1);
+ toLower(str2);
+
+ int minLength = str1.length() > str2.length()
+ ? static_cast<int>(str2.length()) : static_cast<int>(str1.length());
+ for (int f = 0; f < minLength; f ++)
+ {
+ if (str1.at(f) != str2.at(f))
+ return s1.substr(0, f);
+ }
+ return s1.substr(0, minLength);
+}
+
unsigned long findI(std::string str, std::string subStr)
{
str = toLower(str);
diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h
index 25fe11e2d..273fa0c8c 100644
--- a/src/utils/stringutils.h
+++ b/src/utils/stringutils.h
@@ -116,6 +116,9 @@ std::string removeColors(std::string msg);
const std::string findSameSubstring(const std::string &str1,
const std::string &str2);
+const std::string findSameSubstringI(const std::string &str1,
+ const std::string &str2);
+
/**
* Compares the two strings case-insensitively.
*