SL-15383 Crash at SearchableControl's setHighlighted
parent
261ba33537
commit
5b92d266df
|
|
@ -263,7 +263,8 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
|
|||
mGotPersonalInfo(false),
|
||||
mOriginalIMViaEmail(false),
|
||||
mLanguageChanged(false),
|
||||
mAvatarDataInitialized(false)
|
||||
mAvatarDataInitialized(false),
|
||||
mSearchDataDirty(true)
|
||||
{
|
||||
LLConversationLog::instance().addObserver(this);
|
||||
|
||||
|
|
@ -2150,6 +2151,11 @@ void LLFloaterPreference::updateClickActionViews()
|
|||
getChild<LLComboBox>("double_click_action_combo")->setValue(dbl_click_to_teleport ? 2 : (int)dbl_click_to_walk);
|
||||
}
|
||||
|
||||
void LLFloaterPreference::updateSearchableItems()
|
||||
{
|
||||
mSearchDataDirty = true;
|
||||
}
|
||||
|
||||
void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param)
|
||||
{
|
||||
LLUIColorTable::instance().setColor(param.asString(), LLColor4(ctrl->getValue()));
|
||||
|
|
@ -2906,10 +2912,19 @@ void LLPanelPreferenceControls::populateControlTable()
|
|||
filename = "control_table_contents_columns_basic.xml";
|
||||
break;
|
||||
default:
|
||||
// Either unknown mode or MODE_SAVED_SETTINGS
|
||||
// It doesn't have UI or actual settings yet
|
||||
LL_INFOS() << "Unimplemented mode" << LL_ENDL;
|
||||
return;
|
||||
{
|
||||
// Either unknown mode or MODE_SAVED_SETTINGS
|
||||
// It doesn't have UI or actual settings yet
|
||||
LL_WARNS() << "Unimplemented mode" << LL_ENDL;
|
||||
|
||||
// Searchable columns were removed, mark searchables for an update
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->updateSearchableItems();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
addControlTableColumns(filename);
|
||||
|
||||
|
|
@ -2940,8 +2955,15 @@ void LLPanelPreferenceControls::populateControlTable()
|
|||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "Unimplemented mode" << LL_ENDL;
|
||||
return;
|
||||
LL_WARNS() << "Unimplemented mode" << LL_ENDL;
|
||||
}
|
||||
|
||||
// Searchable columns were removed and readded, mark searchables for an update
|
||||
// Note: at the moment tables/lists lack proper llsearchableui support
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->updateSearchableItems();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3559,6 +3581,12 @@ void LLFloaterPreference::onUpdateFilterTerm(bool force)
|
|||
if( !mSearchData || (mSearchData->mLastFilter == seachValue && !force))
|
||||
return;
|
||||
|
||||
if (mSearchDataDirty)
|
||||
{
|
||||
// Data exists, but is obsolete, regenerate
|
||||
collectSearchableItems();
|
||||
}
|
||||
|
||||
mSearchData->mLastFilter = seachValue;
|
||||
|
||||
if( !mSearchData->mRootTab )
|
||||
|
|
@ -3656,4 +3684,5 @@ void LLFloaterPreference::collectSearchableItems()
|
|||
|
||||
collectChildren( this, ll::prefs::PanelDataPtr(), pRootTabcontainer );
|
||||
}
|
||||
mSearchDataDirty = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ public:
|
|||
void getControlNames(std::vector<std::string>& names);
|
||||
// updates click/double-click action controls depending on values from settings.xml
|
||||
void updateClickActionViews();
|
||||
void updateSearchableItems();
|
||||
|
||||
protected:
|
||||
void onBtnOK(const LLSD& userdata);
|
||||
|
|
@ -220,6 +221,7 @@ private:
|
|||
|
||||
LLSearchEditor *mFilterEdit;
|
||||
std::unique_ptr< ll::prefs::SearchData > mSearchData;
|
||||
bool mSearchDataDirty;
|
||||
|
||||
void onUpdateFilterTerm( bool force = false );
|
||||
void collectSearchableItems();
|
||||
|
|
|
|||
Loading…
Reference in New Issue