diff options
author | Nat Linden <nat@lindenlab.com> | 2022-09-19 21:21:21 +0000 |
---|---|---|
committer | Nat Linden <nat@lindenlab.com> | 2022-09-19 21:21:21 +0000 |
commit | 9ac0b3da77ca0c54161803f23cc37c09e871799d (patch) | |
tree | ec9575c248d6e9cd01d8d15471ceb952c7dba738 /indra/llui/llscrolllistctrl.cpp | |
parent | 5f1c8d311904bd3937f5ba70476e16233f7d21c1 (diff) | |
parent | f39be1dfd30032f10f21cccc29e93c1c49f01df5 (diff) |
SL-18068: Merged DRTVWR-565-maint-P into sl-18068
Diffstat (limited to 'indra/llui/llscrolllistctrl.cpp')
-rw-r--r-- | indra/llui/llscrolllistctrl.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 65c7b420ce..88c1bdc0d5 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -3395,3 +3395,42 @@ boost::signals2::connection LLScrollListCtrl::setIsFriendCallback(const is_frien } return mIsFriendSignal->connect(cb); } + +bool LLScrollListCtrl::highlightMatchingItems(const std::string& filter_str) +{ + if (filter_str == "" || filter_str == " ") + { + clearHighlightedItems(); + return false; + } + + bool res = false; + + setHighlightedColor(LLUIColorTable::instance().getColor("SearchableControlHighlightColor", LLColor4::red)); + + std::string filter_str_lc(filter_str); + LLStringUtil::toLower(filter_str_lc); + + std::vector<LLScrollListItem*> data = getAllData(); + std::vector<LLScrollListItem*>::iterator iter = data.begin(); + while (iter != data.end()) + { + LLScrollListCell* cell = (*iter)->getColumn(0); + if (cell) + { + std::string value = cell->getValue().asString(); + LLStringUtil::toLower(value); + if (value.find(filter_str_lc) == std::string::npos) + { + (*iter)->setHighlighted(false); + } + else + { + (*iter)->setHighlighted(true); + res = true; + } + } + iter++; + } + return res; +} |