From 11a7b5b4df11efb81cd4c0d3deb6d33344c77d90 Mon Sep 17 00:00:00 2001 From: chanayane Date: Wed, 22 Jan 2025 22:24:07 +0100 Subject: [PATCH] Allows to limit search to folders only in inventory --- indra/newview/llinventoryfilter.cpp | 36 ++++++++++++++++--- indra/newview/llpanelmaininventory.cpp | 3 ++ .../ansastorm/xui/en/panel_main_inventory.xml | 3 ++ .../default/xui/en/panel_main_inventory.xml | 3 ++ .../newview/skins/default/xui/en/strings.xml | 3 ++ .../starlight/xui/en/panel_main_inventory.xml | 3 ++ .../xui/en/panel_main_inventory.xml | 3 ++ .../vintage/xui/en/panel_main_inventory.xml | 3 ++ 8 files changed, 52 insertions(+), 5 deletions(-) diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 76f35af8f4..73449f4e86 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -702,17 +702,29 @@ bool LLInventoryFilter::checkAgainstSearchVisibility(const LLFolderViewModelItem if (!object) return true; - const bool is_link = object->getIsLinkType(); - if (is_link && ((mFilterOps.mSearchVisibility & VISIBILITY_LINKS) == 0)) +// Short circuit search optimisation + //const bool is_link = object->getIsLinkType(); + //if (is_link && ((mFilterOps.mSearchVisibility & VISIBILITY_LINKS) == 0)) + if (((mFilterOps.mSearchVisibility & VISIBILITY_LINKS) == 0) && object->getIsLinkType()) +// return false; - if (listener->isItemInOutfits() && ((mFilterOps.mSearchVisibility & VISIBILITY_OUTFITS) == 0)) +// Short circuit search optimisation + //if (listener->isItemInOutfits() && ((mFilterOps.mSearchVisibility & VISIBILITY_OUTFITS) == 0)) + if (((mFilterOps.mSearchVisibility & VISIBILITY_OUTFITS) == 0) && listener->isItemInOutfits()) +// return false; - if (listener->isItemInTrash() && ((mFilterOps.mSearchVisibility & VISIBILITY_TRASH) == 0)) +// Short circuit search optimisation + //if (listener->isItemInTrash() && ((mFilterOps.mSearchVisibility & VISIBILITY_TRASH) == 0)) + if (((mFilterOps.mSearchVisibility & VISIBILITY_TRASH) == 0) && listener->isItemInTrash()) +// return false; - if (!listener->isAgentInventory() && ((mFilterOps.mSearchVisibility & VISIBILITY_LIBRARY) == 0)) +// Short circuit search optimisation + //if (!listener->isAgentInventory() && ((mFilterOps.mSearchVisibility & VISIBILITY_LIBRARY) == 0)) + if (((mFilterOps.mSearchVisibility & VISIBILITY_LIBRARY) == 0) && !listener->isAgentInventory()) +// return false; return true; @@ -1617,6 +1629,20 @@ const std::string& LLInventoryFilter::getFilterText() filtered_by_all_types = false; } +// Search folders only + if (isFilterObjectTypesWith(LLInventoryType::IT_CATEGORY)) + { + filtered_types += LLTrans::getString("Folders"); + filtered_by_type = true; + num_filter_types++; + } + else + { + not_filtered_types += LLTrans::getString("Folders"); + filtered_by_all_types = false; + } +// + if (!LLInventoryModelBackgroundFetch::instance().folderFetchActive() && filtered_by_type && !filtered_by_all_types) diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index c2e6ad344c..b2953e7931 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -224,6 +224,9 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p) mFilterMap["filter_type_snapshots"] = 0x01 << LLInventoryType::IT_SNAPSHOT; mFilterMap["filter_type_settings"] = 0x01 << LLInventoryType::IT_SETTINGS; mFilterMap["filter_type_materials"] = 0x01 << LLInventoryType::IT_MATERIAL; +// Search folders only + mFilterMap["filter_type_folders"] = 0x01 << LLInventoryType::IT_CATEGORY; +// // initialize empty filter mask mFilterMask = 0; diff --git a/indra/newview/skins/ansastorm/xui/en/panel_main_inventory.xml b/indra/newview/skins/ansastorm/xui/en/panel_main_inventory.xml index e6dbc0b3d5..9cc5648c06 100644 --- a/indra/newview/skins/ansastorm/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/ansastorm/xui/en/panel_main_inventory.xml @@ -738,6 +738,9 @@ + + + diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 8c8699b0e6..688b06f88a 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -182,6 +182,9 @@ + + + diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 135135c5ea..a0315d98c2 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -927,6 +927,9 @@ If you continue to receive this message, please contact Second Life support for + + + diff --git a/indra/newview/skins/starlight/xui/en/panel_main_inventory.xml b/indra/newview/skins/starlight/xui/en/panel_main_inventory.xml index 425773fd8e..bc87834057 100644 --- a/indra/newview/skins/starlight/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/starlight/xui/en/panel_main_inventory.xml @@ -181,6 +181,9 @@ + + + diff --git a/indra/newview/skins/starlightcui/xui/en/panel_main_inventory.xml b/indra/newview/skins/starlightcui/xui/en/panel_main_inventory.xml index 158955867c..db3d64df5c 100644 --- a/indra/newview/skins/starlightcui/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/starlightcui/xui/en/panel_main_inventory.xml @@ -183,6 +183,9 @@ + + + diff --git a/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml b/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml index 40d9d044f9..7d99876922 100644 --- a/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml @@ -786,6 +786,9 @@ + + +