From aa25555e3f4edf4cda1a3c2bf2db945c11c02742 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Mon, 26 Sep 2022 02:35:04 +0200 Subject: [PATCH] Add Reload Folder action to inventory folders so users can try to refresh folders with missing content. Only works one folder at a time, and not on the root folder, to prevent misuse. Needs to be tested a lot. --- indra/newview/llinventorybridge.cpp | 29 +++++++++++++++++++ .../skins/default/xui/en/menu_inventory.xml | 8 +++++ 2 files changed, 37 insertions(+) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 77625c1360..56b0818747 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3741,6 +3741,21 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) LLFloaterReg::showInstance("fs_partial_inventory", LLSD().with("start_folder_id", mUUID).with("start_folder_name", mDisplayName)); } // + + // Add "Reload folder" action to inventory + else if ("reload_folder" == action) + { + LLViewerInventoryCategory *cat = model->getCategory(mUUID); + + if (!cat) + { + return; + } + + cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN); + cat->fetch(); + } + // } void LLFolderBridge::gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level) @@ -4686,6 +4701,20 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items // Show folder in new window option items.push_back((std::string("Show in new Window"))); + // Add "Reload folder" action to inventory + // only allow reload for a single, non-root folder to prevent misuse + if (!(flags & ITEM_IN_MULTI_SELECTION)) + { + if (mUUID != model->findCategoryUUIDForType(LLFolderType::FT_ROOT_INVENTORY)) + { + if (mUUID != model->findLibraryCategoryUUIDForType(LLFolderType::FT_ROOT_INVENTORY)) + { + items.push_back(std::string("ReloadFolder")); + } + } + } + // + // Add menu items that are dependent on the contents of the folder. LLViewerInventoryCategory* category = (LLViewerInventoryCategory *) model->getCategory(mUUID); if (category && (marketplace_listings_id != mUUID)) diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index d1073e12e8..c6ccbc20c4 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -652,6 +652,14 @@ function="Inventory.DoToSelected" parameter="show_in_new_window" /> + + +