Upon further consideration and a bit of feedback, the new matching common characters behavior of gesture autocomplete is probably bad, I've commented it out and brought back the old code.
This commit is contained in:
@@ -1358,8 +1358,10 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
|
|||||||
{
|
{
|
||||||
S32 in_len = in_str.length();
|
S32 in_len = in_str.length();
|
||||||
|
|
||||||
|
#ifdef MATCH_COMMON_CHARS
|
||||||
std::string rest_of_match = "";
|
std::string rest_of_match = "";
|
||||||
std::string buf = "";
|
std::string buf = "";
|
||||||
|
#endif
|
||||||
item_map_t::iterator it;
|
item_map_t::iterator it;
|
||||||
for (it = mActive.begin(); it != mActive.end(); ++it)
|
for (it = mActive.begin(); it != mActive.end(); ++it)
|
||||||
{
|
{
|
||||||
@@ -1367,18 +1369,26 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
|
|||||||
if (gesture)
|
if (gesture)
|
||||||
{
|
{
|
||||||
const std::string& trigger = gesture->getTrigger();
|
const std::string& trigger = gesture->getTrigger();
|
||||||
|
#ifdef MATCH_COMMON_CHARS
|
||||||
//return whole trigger, if received text equals to it
|
//return whole trigger, if received text equals to it
|
||||||
if (!LLStringUtil::compareInsensitive(in_str, trigger))
|
if (!LLStringUtil::compareInsensitive(in_str, trigger))
|
||||||
{
|
{
|
||||||
*out_str = trigger;
|
*out_str = trigger;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (in_len > (S32)trigger.length()) continue; // too short, bail out
|
||||||
|
#endif
|
||||||
|
|
||||||
//return common chars, if more than one trigger matches the prefix
|
//return common chars, if more than one trigger matches the prefix
|
||||||
std::string trigger_trunc = trigger;
|
std::string trigger_trunc = trigger;
|
||||||
LLStringUtil::truncate(trigger_trunc, in_len);
|
LLStringUtil::truncate(trigger_trunc, in_len);
|
||||||
if (!LLStringUtil::compareInsensitive(in_str, trigger_trunc))
|
if (!LLStringUtil::compareInsensitive(in_str, trigger_trunc))
|
||||||
{
|
{
|
||||||
|
#ifndef MATCH_COMMON_CHARS
|
||||||
|
*out_str = trigger;
|
||||||
|
return TRUE;
|
||||||
|
#else
|
||||||
if (rest_of_match.compare("") == 0)
|
if (rest_of_match.compare("") == 0)
|
||||||
{
|
{
|
||||||
rest_of_match = trigger.substr(in_str.size());
|
rest_of_match = trigger.substr(in_str.size());
|
||||||
@@ -1411,16 +1421,18 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
|
|||||||
{
|
{
|
||||||
rest_of_match = buf;
|
rest_of_match = buf;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MATCH_COMMON_CHARS
|
||||||
if (!rest_of_match.empty())
|
if (!rest_of_match.empty())
|
||||||
{
|
{
|
||||||
*out_str = in_str + rest_of_match;
|
*out_str = in_str + rest_of_match;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user