From f0f4b00290c3ae4b2b80bdef22d4ac56a863d35a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 8 Sep 2011 01:01:44 +0300 Subject: Fix register in some auto complete strings. --- src/gui/chatwindow.cpp | 3 +-- src/utils/stringutils.cpp | 18 ++++++++++++++++++ src/utils/stringutils.h | 3 +++ 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 &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(str2.length()) : static_cast(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. * -- cgit v1.2.3-70-g09d2