summaryrefslogtreecommitdiff
path: root/indra/newview/llinventoryfilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llinventoryfilter.cpp')
-rwxr-xr-xindra/newview/llinventoryfilter.cpp38
1 files changed, 22 insertions, 16 deletions
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 6a800cf5ba..cf5e87c717 100755
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -33,6 +33,7 @@
#include "llfolderviewitem.h"
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
+#include "llinventoryfunctions.h"
#include "llmarketplacefunctions.h"
#include "llviewercontrol.h"
#include "llfolderview.h"
@@ -133,29 +134,34 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const
}
// Marketplace folder filtering
- const U32 filterTypes = mFilterOps.mFilterTypes;
- if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE)
- {
- if (!LLMarketplaceData::instance().getActivationState(folder_id))
+ S32 depth = depth_nesting_in_marketplace(folder_id);
+ if (depth > 0)
+ {
+ const U32 filterTypes = mFilterOps.mFilterTypes;
+ LLUUID listing_uuid = nested_parent_id(folder_id, depth);
+ if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE)
{
- return false;
+ if (!LLMarketplaceData::instance().getActivationState(listing_uuid))
+ {
+ return false;
+ }
}
- }
- if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE)
- {
- if (LLMarketplaceData::instance().getActivationState(folder_id))
+ else if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE)
{
- return false;
+ if (!LLMarketplaceData::instance().isListed(listing_uuid) || LLMarketplaceData::instance().getActivationState(listing_uuid))
+ {
+ return false;
+ }
}
- }
- if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED)
- {
- if (!LLMarketplaceData::instance().getListingID(folder_id).empty())
+ else if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED)
{
- return false;
+ if (LLMarketplaceData::instance().isListed(listing_uuid))
+ {
+ return false;
+ }
}
}
-
+
// Always check against the clipboard
const BOOL passed_clipboard = checkAgainstClipboard(folder_id);