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 @@
+
+
+