Fixed not working search on radar (FIRE-2179)
parent
f8d8f2e81c
commit
2765106aba
|
|
@ -199,7 +199,10 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
|
|||
mHoveredColor(p.hovered_color()),
|
||||
mSearchColumn(p.search_column),
|
||||
mColumnPadding(p.column_padding),
|
||||
mContextMenuType(MENU_NONE)
|
||||
// <FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
//mContextMenuType(MENU_NONE)
|
||||
mContextMenuType(MENU_NONE),
|
||||
mFilterColumn(-1)
|
||||
{
|
||||
mItemListRect.setOriginAndSize(
|
||||
mBorderThickness,
|
||||
|
|
@ -1406,11 +1409,31 @@ void LLScrollListCtrl::drawItems()
|
|||
static LLUICachedControl<F32> type_ahead_timeout ("TypeAheadTimeout", 0);
|
||||
highlight_color.mV[VALPHA] = clamp_rescale(mSearchTimer.getElapsedTimeF32(), type_ahead_timeout * 0.7f, type_ahead_timeout, 0.4f, 0.f);
|
||||
|
||||
// <FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
std::string preparedFilterString(mFilterString);
|
||||
if (mFilterColumn > -1)
|
||||
{
|
||||
std::transform(preparedFilterString.begin(), preparedFilterString.end(), preparedFilterString.begin(), ::tolower);
|
||||
}
|
||||
// </FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
|
||||
item_list::iterator iter;
|
||||
for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
|
||||
{
|
||||
LLScrollListItem* item = *iter;
|
||||
|
||||
// <FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
if (mFilterColumn > -1)
|
||||
{
|
||||
std::string filterColumnValue = item->getColumn(mFilterColumn)->getValue().asString();
|
||||
std::transform(filterColumnValue.begin(), filterColumnValue.end(), filterColumnValue.begin(), ::tolower);
|
||||
if (mFilterString.length() > 0 && filterColumnValue.find(preparedFilterString) == std::string::npos)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
|
||||
item_rect.setOriginAndSize(
|
||||
x,
|
||||
cur_y,
|
||||
|
|
|
|||
|
|
@ -303,6 +303,10 @@ public:
|
|||
|
||||
void clearSearchString() { mSearchString.clear(); }
|
||||
|
||||
// <FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
void setFilterString(const std::string& str) { mFilterString = str; }
|
||||
void setFilterColumn(S32 col) { mFilterColumn = col; }
|
||||
|
||||
// support right-click context menus for avatar/group lists
|
||||
enum ContextMenuType { MENU_NONE, MENU_AVATAR, MENU_GROUP };
|
||||
void setContextMenu(const ContextMenuType &menu) { mContextMenuType = menu; }
|
||||
|
|
@ -490,6 +494,10 @@ private:
|
|||
LLWString mSearchString;
|
||||
LLFrameTimer mSearchTimer;
|
||||
|
||||
// <FS:Ansariel> Fix for FS-specific people list (radar)
|
||||
std::string mFilterString;
|
||||
S32 mFilterColumn;
|
||||
|
||||
S32 mSearchColumn;
|
||||
S32 mNumDynamicWidthColumns;
|
||||
S32 mTotalStaticColumnWidth;
|
||||
|
|
|
|||
|
|
@ -607,6 +607,7 @@ BOOL LLPanelPeople::postBuild()
|
|||
// AO: radarlist takes over for nearbylist for presentation.
|
||||
mRadarList = nearby_tab->getChild<LLRadarListCtrl>("radar_list");
|
||||
mRadarList->sortByColumn("range",TRUE); // sort by range
|
||||
mRadarList->setFilterColumn(0);
|
||||
mRadarFrameCount = 0;
|
||||
mRadarAlertRequest = false;
|
||||
mRadarLastBulkOffsetRequestTime = 0;
|
||||
|
|
@ -1749,8 +1750,10 @@ void LLPanelPeople::onFilterEdit(const std::string& search_string)
|
|||
|
||||
|
||||
// Apply new filter.
|
||||
// AO: currently broken
|
||||
// <FS:Ansariel> Changed for FS specific radar
|
||||
// mNearbyList->setNameFilter(mFilterSubStringOrig);
|
||||
mRadarList->setFilterString(mFilterSubStringOrig);
|
||||
// </FS:Ansariel> Changed for FS specific radar
|
||||
mOnlineFriendList->setNameFilter(mFilterSubStringOrig);
|
||||
mAllFriendList->setNameFilter(mFilterSubStringOrig);
|
||||
mRecentList->setNameFilter(mFilterSubStringOrig);
|
||||
|
|
|
|||
Loading…
Reference in New Issue