diff options
Diffstat (limited to 'indra/newview/llinventoryfilter.cpp')
-rwxr-xr-x | indra/newview/llinventoryfilter.cpp | 38 |
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); |