Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer

master
Ansariel 2024-12-19 18:25:05 +01:00
commit eed9b396bb
6 changed files with 44 additions and 23 deletions

View File

@ -300,7 +300,8 @@ EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByImageName(std::strin
LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index ) const
{
return getTexture(index)->mWearableType;
auto* tex = getTexture(index);
return tex ? tex->mWearableType : LLWearableType::WT_INVALID;
}
// static

View File

@ -661,7 +661,7 @@ void LLWearable::setVisualParamWeight(S32 param_index, F32 value, bool upload_ba
}
else
{
LL_ERRS() << "LLWearable::setVisualParam passed invalid parameter index: " << param_index << " for wearable type: " << this->getName() << LL_ENDL;
LL_WARNS() << "LLWearable::setVisualParam passed invalid parameter index: " << param_index << " for wearable type: " << this->getName() << LL_ENDL;
}
}
@ -674,7 +674,7 @@ F32 LLWearable::getVisualParamWeight(S32 param_index) const
}
else
{
LL_WARNS() << "LLWerable::getVisualParam passed invalid parameter index: " << param_index << " for wearable type: " << this->getName() << LL_ENDL;
LL_WARNS() << "LLWearable::getVisualParam passed invalid parameter index: " << param_index << " for wearable type: " << this->getName() << LL_ENDL;
}
return (F32)-1.0;
}

View File

@ -423,6 +423,7 @@ public:
virtual void doItem(LLFolderViewItem* item) {}
void setApply(bool apply);
void clearOpenFolders() { mOpenFolders.clear(); }
bool hasOpenFolders() { return !mOpenFolders.empty(); }
protected:
std::set<LLUUID> mOpenFolders;
bool mApply;

View File

@ -177,32 +177,47 @@ void LLPanelContents::getState(LLViewerObject *objectp )
void LLPanelContents::onFilterEdit()
{
const std::string& filter_substring = mFilterEditor->getText();
if (filter_substring.empty())
if (!mPanelInventoryObject->hasInventory())
{
if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
{
// The current filter and the new filter are empty, nothing to do
return;
}
mSavedFolderState.setApply(true);
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
// Add a folder with the current item to the list of previously opened folders
LLOpenFoldersWithSelection opener;
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(opener);
mPanelInventoryObject->getRootFolder()->scrollToShowSelection();
mDirtyFilter = true;
}
else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
else
{
// The first letter in search term, save existing folder open state
if (!mPanelInventoryObject->getFilter().isNotDefault())
if (filter_substring.empty())
{
mSavedFolderState.setApply(false);
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
{
// The current filter and the new filter are empty, nothing to do
return;
}
if (mDirtyFilter && !mSavedFolderState.hasOpenFolders())
{
mPanelInventoryObject->getRootFolder()->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN);
}
else
{
mSavedFolderState.setApply(true);
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
}
mDirtyFilter = false;
// Add a folder with the current item to the list of previously opened folders
LLOpenFoldersWithSelection opener;
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(opener);
mPanelInventoryObject->getRootFolder()->scrollToShowSelection();
}
else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
{
// The first letter in search term, save existing folder open state
if (!mPanelInventoryObject->getFilter().isNotDefault())
{
mSavedFolderState.setApply(false);
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
mDirtyFilter = false;
}
}
}
mPanelInventoryObject->getFilter().setFilterSubString(filter_substring);
}

View File

@ -72,6 +72,8 @@ protected:
void getState(LLViewerObject *object);
void onFilterEdit();
bool mDirtyFilter { false };
public:
class LLFilterEditor* mFilterEditor;
LLSaveFolderState mSavedFolderState;

View File

@ -88,6 +88,8 @@ public:
static void idle(void* user_data);
bool hasInventory(){ return mHaveInventory; };
protected:
void reset();
/*virtual*/ void inventoryChanged(LLViewerObject* object,