diff options
-rw-r--r-- | indra/newview/llfolderview.h | 3 | ||||
-rw-r--r-- | indra/newview/llinventoryfilter.cpp | 225 | ||||
-rw-r--r-- | indra/newview/llinventoryfilter.h | 195 | ||||
-rw-r--r-- | indra/newview/llinventoryfunctions.h | 27 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.h | 2 | ||||
-rw-r--r-- | indra/newview/llpanelobjectinventory.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llpaneloutfitsinventory.cpp | 2 |
8 files changed, 280 insertions, 179 deletions
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index a0e252ae88..bbd92b487f 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -71,9 +71,6 @@ class LLUICtrl; // that only work folders or only work on items, but I'll worry about // that later when it's determined to be too slow. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - class LLFolderViewFunctor { public: diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 085c96c93d..3664d7d117 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -44,6 +44,18 @@ // linden library includes #include "lltrans.h" +LLInventoryFilter::FilterOps::FilterOps() : + mFilterObjectTypes(0xffffffffffffffffULL), + mMinDate(time_min()), + mMaxDate(time_max()), + mHoursAgo(0), + mShowFolderState(SHOW_NON_EMPTY_FOLDERS), + mPermissions(PERM_NONE), + mFilterType(FILTERTYPE_ITEM), + mFilterUUID(LLUUID::null) +{ +} + ///---------------------------------------------------------------------------- /// Class LLInventoryFilter ///---------------------------------------------------------------------------- @@ -52,14 +64,6 @@ LLInventoryFilter::LLInventoryFilter(const std::string& name) mModified(FALSE), mNeedTextRebuild(TRUE) { - mFilterOps.mFilterTypes = 0xffffffffffffffffULL; - mFilterOps.mMinDate = time_min(); - mFilterOps.mMaxDate = time_max(); - mFilterOps.mHoursAgo = 0; - mFilterOps.mShowFolderState = SHOW_NON_EMPTY_FOLDERS; - mFilterOps.mPermissions = PERM_NONE; - mFilterOps.mFilterForCategories = FALSE; - mOrder = SO_FOLDERS_BY_NAME; // This gets overridden by a pref immediately mSubStringMatchOffset = 0; @@ -81,11 +85,17 @@ LLInventoryFilter::~LLInventoryFilter() { } -BOOL LLInventoryFilter::check(LLFolderViewItem* item) +BOOL LLInventoryFilter::check(const LLFolderViewItem* item) { - time_t earliest; + // If it's a folder and we're showing all folders, return TRUE automatically. + const BOOL is_folder = (dynamic_cast<const LLFolderViewFolder*>(item) != NULL); + if (is_folder && (mFilterOps.mShowFolderState == LLInventoryFilter::SHOW_ALL_FOLDERS)) + { + return TRUE; + } - earliest = time_corrected() - mFilterOps.mHoursAgo * 3600; + const U16 HOURS_TO_SECONDS = 3600; + time_t earliest = time_corrected() - mFilterOps.mHoursAgo * HOURS_TO_SECONDS; if (mFilterOps.mMinDate > time_min() && mFilterOps.mMinDate < earliest) { earliest = mFilterOps.mMinDate; @@ -94,59 +104,64 @@ BOOL LLInventoryFilter::check(LLFolderViewItem* item) { earliest = 0; } - LLFolderViewEventListener* listener = item->getListener(); + + const LLFolderViewEventListener* listener = item->getListener(); mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel().find(mFilterSubString) : std::string::npos; - bool passed_type = false; - if (mFilterOps.mFilterForCategories) - { - // Pass if this item is a category of the filter type, or - // if its parent is a category of the filter type. - LLUUID uuid = listener->getUUID(); - if (listener->getInventoryType() != LLInventoryType::IT_CATEGORY) - { - const LLInventoryObject *obj = gInventory.getObject(uuid); - uuid = obj->getParentUUID(); - } - LLViewerInventoryCategory *cat = gInventory.getCategory(uuid); - if (cat) - { - passed_type |= ((1LL << cat->getPreferredType() & mFilterOps.mFilterTypes) != U64(0)); - } - } - else + const BOOL passed_filtertype = checkAgainstFilterType(item); + const BOOL passed = passed_filtertype && + (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos) && + ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions) && + (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate); + + return passed; +} + +BOOL LLInventoryFilter::checkAgainstFilterType(const LLFolderViewItem* item) +{ + const LLFolderViewEventListener* listener = item->getListener(); + if (!listener) return FALSE; + + const LLInventoryType::EType object_type = listener->getInventoryType(); + const LLUUID object_id = listener->getUUID(); + const LLInventoryObject *object = gInventory.getObject(object_id); + + if (!object) return FALSE; + + switch (mFilterOps.mFilterType) { - LLInventoryType::EType type = listener->getInventoryType(); - passed_type |= ((1LL << type & mFilterOps.mFilterTypes) != U64(0)); - if (type == LLInventoryType::IT_NONE) + case FILTERTYPE_ITEM: { - const LLInventoryObject *obj = gInventory.getObject(listener->getUUID()); - if (obj && obj->getIsLinkType()) + // If it has no type, pass it, unless it's a link. + if (object_type == LLInventoryType::IT_NONE) { - passed_type = FALSE; + return !object->getIsLinkType(); } - else + return (1LL << object_type & mFilterOps.mFilterObjectTypes) != U64(0); + } + // Pass if this item is a category of the filter type, or + // if its parent is a category of the filter type. + case FILTERTYPE_CATEGORY: + { + LLUUID cat_id = object_id; + if (listener->getInventoryType() != LLInventoryType::IT_CATEGORY) { - passed_type = TRUE; + cat_id = object->getParentUUID(); } + const LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id); + if (!cat) return FALSE; + return (1LL << cat->getPreferredType() & mFilterOps.mFilterObjectTypes) != U64(0); + } + case FILTERTYPE_UUID: + { + return (object->getLinkedUUID() == mFilterOps.mFilterUUID); } } - - BOOL passed = passed_type - && (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos) - && ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions) - && (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate); - - BOOL is_folder = (dynamic_cast<LLFolderViewFolder*>(item) != NULL); - if (is_folder && mFilterOps.mShowFolderState == LLInventoryFilter::SHOW_ALL_FOLDERS) - { - passed = TRUE; - } - - return passed; + return FALSE; } -const std::string LLInventoryFilter::getFilterSubString(BOOL trim) + +const std::string& LLInventoryFilter::getFilterSubString(BOOL trim) const { return mFilterSubString; } @@ -157,9 +172,9 @@ std::string::size_type LLInventoryFilter::getStringMatchOffset() const } // has user modified default filter params? -BOOL LLInventoryFilter::isNotDefault() +BOOL LLInventoryFilter::isNotDefault() const { - return mFilterOps.mFilterTypes != mDefaultFilterOps.mFilterTypes + return mFilterOps.mFilterObjectTypes != mDefaultFilterOps.mFilterObjectTypes || mFilterSubString.size() || mFilterOps.mPermissions != mDefaultFilterOps.mPermissions || mFilterOps.mMinDate != mDefaultFilterOps.mMinDate @@ -167,9 +182,9 @@ BOOL LLInventoryFilter::isNotDefault() || mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo; } -BOOL LLInventoryFilter::isActive() +BOOL LLInventoryFilter::isActive() const { - return mFilterOps.mFilterTypes != 0xffffffffffffffffULL + return mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL || mFilterSubString.size() || mFilterOps.mPermissions != PERM_NONE || mFilterOps.mMinDate != time_min() @@ -177,7 +192,7 @@ BOOL LLInventoryFilter::isActive() || mFilterOps.mHoursAgo != 0; } -BOOL LLInventoryFilter::isModified() +BOOL LLInventoryFilter::isModified() const { return mModified; } @@ -189,15 +204,15 @@ BOOL LLInventoryFilter::isModifiedAndClear() return ret; } -void LLInventoryFilter::setFilterTypes(U64 types, BOOL filter_for_categories) +void LLInventoryFilter::setFilterTypes(U64 types, EFilterType filter_type) { - if (mFilterOps.mFilterTypes != types) + if (mFilterOps.mFilterObjectTypes != types) { // keep current items only if no type bits getting turned off - BOOL fewer_bits_set = (mFilterOps.mFilterTypes & ~types); - BOOL more_bits_set = (~mFilterOps.mFilterTypes & types); + BOOL fewer_bits_set = (mFilterOps.mFilterObjectTypes & ~types); + BOOL more_bits_set = (~mFilterOps.mFilterObjectTypes & types); - mFilterOps.mFilterTypes = types; + mFilterOps.mFilterObjectTypes = types; if (more_bits_set && fewer_bits_set) { // neither less or more restrive, both simultaneously @@ -214,7 +229,7 @@ void LLInventoryFilter::setFilterTypes(U64 types, BOOL filter_for_categories) setModified(FILTER_MORE_RESTRICTIVE); } } - mFilterOps.mFilterForCategories = filter_for_categories; + mFilterOps.mFilterType = filter_type; } void LLInventoryFilter::setFilterSubString(const std::string& string) @@ -298,12 +313,18 @@ void LLInventoryFilter::setDateRangeLastLogoff(BOOL sl) } } -BOOL LLInventoryFilter::isSinceLogoff() +BOOL LLInventoryFilter::isSinceLogoff() const { return (mFilterOps.mMinDate == (time_t)mLastLogoff) && (mFilterOps.mMaxDate == time_max()); } +void LLInventoryFilter::clearModified() +{ + mModified = FALSE; + mFilterBehavior = FILTER_NONE; +} + void LLInventoryFilter::setHoursAgo(U32 hours) { if (mFilterOps.mHoursAgo != hours) @@ -417,12 +438,12 @@ void LLInventoryFilter::setModified(EFilterBehavior behavior) } } -BOOL LLInventoryFilter::isFilterWith(LLInventoryType::EType t) +BOOL LLInventoryFilter::isFilterWith(LLInventoryType::EType t) const { - return mFilterOps.mFilterTypes & (1LL << t); + return mFilterOps.mFilterObjectTypes & (1LL << t); } -std::string LLInventoryFilter::getFilterText() +const std::string& LLInventoryFilter::getFilterText() { if (!mNeedTextRebuild) { @@ -619,7 +640,7 @@ std::string LLInventoryFilter::getFilterText() return mFilterText; } -void LLInventoryFilter::toLLSD(LLSD& data) +void LLInventoryFilter::toLLSD(LLSD& data) const { data["filter_types"] = (LLSD::Integer)getFilterTypes(); data["min_date"] = (LLSD::Integer)getMinDate(); @@ -674,3 +695,71 @@ void LLInventoryFilter::fromLLSD(LLSD& data) setDateRangeLastLogoff((bool)data["since_logoff"].asBoolean()); } } + +U32 LLInventoryFilter::getFilterTypes() const +{ + return mFilterOps.mFilterObjectTypes; +} + +BOOL LLInventoryFilter::hasFilterString() const +{ + return mFilterSubString.size() > 0; +} + +PermissionMask LLInventoryFilter::getFilterPermissions() const +{ + return mFilterOps.mPermissions; +} + +time_t LLInventoryFilter::getMinDate() const +{ + return mFilterOps.mMinDate; +} + +time_t LLInventoryFilter::getMaxDate() const +{ + return mFilterOps.mMaxDate; +} +U32 LLInventoryFilter::getHoursAgo() const +{ + return mFilterOps.mHoursAgo; +} +LLInventoryFilter::EFolderShow LLInventoryFilter::getShowFolderState() const +{ + return mFilterOps.mShowFolderState; +} +U32 LLInventoryFilter::getSortOrder() const +{ + return mOrder; +} +const std::string& LLInventoryFilter::getName() const +{ + return mName; +} + +void LLInventoryFilter::setFilterCount(S32 count) +{ + mFilterCount = count; +} +S32 LLInventoryFilter::getFilterCount() const +{ + return mFilterCount; +} + +void LLInventoryFilter::decrementFilterCount() +{ + mFilterCount--; +} + +S32 LLInventoryFilter::getCurrentGeneration() const +{ + return mFilterGeneration; +} +S32 LLInventoryFilter::getMinRequiredGeneration() const +{ + return mMinRequiredGeneration; +} +S32 LLInventoryFilter::getMustPassGeneration() const +{ + return mMustPassGeneration; +} diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index b803df110b..20a4a15028 100644 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -33,30 +33,38 @@ #ifndef LLINVENTORYFILTER_H #define LLINVENTORYFILTER_H -// lots of includes here #include "llinventorytype.h" -#include "llpermissionsflags.h" // PermissionsMask +#include "llpermissionsflags.h" class LLFolderViewItem; class LLInventoryFilter { public: - typedef enum e_folder_show + enum EFolderShow { SHOW_ALL_FOLDERS, SHOW_NON_EMPTY_FOLDERS, SHOW_NO_FOLDERS - } EFolderShow; + }; - typedef enum e_filter_behavior + enum EFilterBehavior { FILTER_NONE, // nothing to do, already filtered FILTER_RESTART, // restart filtering from scratch FILTER_LESS_RESTRICTIVE, // existing filtered items will certainly pass this filter FILTER_MORE_RESTRICTIVE // if you didn't pass the previous filter, you definitely won't pass this one - } EFilterBehavior; + }; + + enum EFilterType + { + FILTERTYPE_NONE, + FILTERTYPE_ITEM, // normal default search-by-item-type + FILTERTYPE_CATEGORY, // search by folder type + FILTERTYPE_UUID // find the object with UUID and any links to it + }; + // REFACTOR: Change this to an enum. static const U32 SO_DATE = 1; static const U32 SO_FOLDERS_BY_NAME = 2; static const U32 SO_SYSTEM_FOLDERS_TO_TOP = 4; @@ -64,89 +72,118 @@ public: LLInventoryFilter(const std::string& name); virtual ~LLInventoryFilter(); - void setFilterTypes(U64 types, BOOL filter_for_categories = FALSE); // if filter_for_categories is true, operate on folder preferred asset type - U32 getFilterTypes() const { return mFilterOps.mFilterTypes; } - - void setFilterSubString(const std::string& string); - const std::string getFilterSubString(BOOL trim = FALSE); - - void setFilterPermissions(PermissionMask perms); - PermissionMask getFilterPermissions() const { return mFilterOps.mPermissions; } - - void setDateRange(time_t min_date, time_t max_date); - void setDateRangeLastLogoff(BOOL sl); - time_t getMinDate() const { return mFilterOps.mMinDate; } - time_t getMaxDate() const { return mFilterOps.mMaxDate; } - - void setHoursAgo(U32 hours); - U32 getHoursAgo() const { return mFilterOps.mHoursAgo; } - - void setShowFolderState( EFolderShow state); - EFolderShow getShowFolderState() { return mFilterOps.mShowFolderState; } - - void setSortOrder(U32 order); - U32 getSortOrder() { return mOrder; } - - BOOL check(LLFolderViewItem* item); + // +-------------------------------------------------------------------+ + // + Execution And Results + // +-------------------------------------------------------------------+ + BOOL check(const LLFolderViewItem* item); + BOOL checkAgainstFilterType(const LLFolderViewItem* item); std::string::size_type getStringMatchOffset() const; - BOOL isActive(); - BOOL isNotDefault(); - BOOL isModified(); - BOOL isModifiedAndClear(); - BOOL isSinceLogoff(); - bool hasFilterString() { return mFilterSubString.size() > 0; } - void clearModified() { mModified = FALSE; mFilterBehavior = FILTER_NONE; } - const std::string getName() const { return mName; } - std::string getFilterText(); - void setFilterCount(S32 count) { mFilterCount = count; } - S32 getFilterCount() { return mFilterCount; } - void decrementFilterCount() { mFilterCount--; } + // +-------------------------------------------------------------------+ + // + Parameters + // +-------------------------------------------------------------------+ + void setFilterTypes(U64 types, EFilterType filter_type = FILTERTYPE_ITEM); + U32 getFilterTypes() const; + BOOL isFilterWith(LLInventoryType::EType t) const; + + void setFilterSubString(const std::string& string); + const std::string& getFilterSubString(BOOL trim = FALSE) const; + BOOL hasFilterString() const; + + void setFilterPermissions(PermissionMask perms); + PermissionMask getFilterPermissions() const; + + void setDateRange(time_t min_date, time_t max_date); + void setDateRangeLastLogoff(BOOL sl); + time_t getMinDate() const; + time_t getMaxDate() const; + + void setHoursAgo(U32 hours); + U32 getHoursAgo() const; + + void setShowFolderState( EFolderShow state); + EFolderShow getShowFolderState() const; + + void setSortOrder(U32 order); + U32 getSortOrder() const; + + // +-------------------------------------------------------------------+ + // + Status + // +-------------------------------------------------------------------+ + BOOL isActive() const; + BOOL isModified() const; + BOOL isModifiedAndClear(); + BOOL isSinceLogoff() const; + void clearModified(); + const std::string& getName() const; + const std::string& getFilterText(); + //RN: this is public to allow system to externally force a global refilter + void setModified(EFilterBehavior behavior = FILTER_RESTART); + + // +-------------------------------------------------------------------+ + // + Count + // +-------------------------------------------------------------------+ + void setFilterCount(S32 count); + S32 getFilterCount() const; + void decrementFilterCount(); + + // +-------------------------------------------------------------------+ + // + Default + // +-------------------------------------------------------------------+ + BOOL isNotDefault() const; + void markDefault(); + void resetDefault(); + + // +-------------------------------------------------------------------+ + // + Generation + // +-------------------------------------------------------------------+ + S32 getCurrentGeneration() const; + S32 getMinRequiredGeneration() const; + S32 getMustPassGeneration() const; + + // +-------------------------------------------------------------------+ + // + Conversion + // +-------------------------------------------------------------------+ + void toLLSD(LLSD& data) const; + void fromLLSD(LLSD& data); - void markDefault(); - void resetDefault(); +private: + struct FilterOps + { + FilterOps(); + EFilterType mFilterType; - BOOL isFilterWith(LLInventoryType::EType t); + U64 mFilterObjectTypes; // For _ITEM or _CATEGORY + LLUUID mFilterUUID; // for UUID - S32 getCurrentGeneration() const { return mFilterGeneration; } - S32 getMinRequiredGeneration() const { return mMinRequiredGeneration; } - S32 getMustPassGeneration() const { return mMustPassGeneration; } + time_t mMinDate; + time_t mMaxDate; + U32 mHoursAgo; + EFolderShow mShowFolderState; + PermissionMask mPermissions; + }; - //RN: this is public to allow system to externally force a global refilter - void setModified(EFilterBehavior behavior = FILTER_RESTART); + U32 mOrder; + U32 mLastLogoff; - void toLLSD(LLSD& data); - void fromLLSD(LLSD& data); + FilterOps mFilterOps; + FilterOps mDefaultFilterOps; -protected: - struct filter_ops - { - U64 mFilterTypes; - BOOL mFilterForCategories; - time_t mMinDate; - time_t mMaxDate; - U32 mHoursAgo; - EFolderShow mShowFolderState; - PermissionMask mPermissions; - }; - filter_ops mFilterOps; - filter_ops mDefaultFilterOps; std::string::size_type mSubStringMatchOffset; - std::string mFilterSubString; - U32 mOrder; - const std::string mName; - S32 mFilterGeneration; - S32 mMustPassGeneration; - S32 mMinRequiredGeneration; - S32 mFilterCount; - S32 mNextFilterGeneration; - EFilterBehavior mFilterBehavior; + std::string mFilterSubString; + const std::string mName; -private: - U32 mLastLogoff; - BOOL mModified; - BOOL mNeedTextRebuild; - std::string mFilterText; + S32 mFilterGeneration; + S32 mMustPassGeneration; + S32 mMinRequiredGeneration; + S32 mNextFilterGeneration; + + S32 mFilterCount; + EFilterBehavior mFilterBehavior; + + BOOL mModified; + BOOL mNeedTextRebuild; + std::string mFilterText; }; #endif diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 95cc68ddbe..9916a2351c 100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -34,32 +34,9 @@ #ifndef LL_LLINVENTORYFUNCTIONS_H #define LL_LLINVENTORYFUNCTIONS_H -#include "llassetstorage.h" -#include "lldarray.h" -#include "llfloater.h" -#include "llinventory.h" -#include "llinventoryfilter.h" +#include "llinventorytype.h" #include "llfolderview.h" -#include "llinventorymodel.h" -#include "lluictrlfactory.h" -#include <set> - - -class LLFolderViewItem; -class LLInventoryFilter; -class LLInventoryModel; -class LLInventoryPanel; -class LLInvFVBridge; -class LLInventoryFVBridgeBuilder; -class LLMenuBarGL; -class LLCheckBoxCtrl; -class LLSpinCtrl; -class LLScrollContainer; -class LLTextBox; -class LLIconCtrl; -class LLSaveFolderState; -class LLFilterEditor; -class LLTabContainer; +#include "llfolderviewitem.h" //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index c13ae7726b..53b78ad438 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -207,9 +207,9 @@ LLInventoryFilter* LLInventoryPanel::getFilter() return NULL; } -void LLInventoryPanel::setFilterTypes(U64 filter_types, BOOL filter_for_categories) +void LLInventoryPanel::setFilterTypes(U64 types, LLInventoryFilter::EFilterType filter_type) { - mFolders->getFilter()->setFilterTypes(filter_types, filter_for_categories); + mFolders->getFilter()->setFilterTypes(types, filter_type); } void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask) diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 02e6041a38..56f7b39480 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -126,7 +126,7 @@ public: void setSelectCallback(const LLFolderView::signal_t::slot_type& cb) { if (mFolders) mFolders->setSelectCallback(cb); } void clearSelection(); LLInventoryFilter* getFilter(); - void setFilterTypes(U64 filter, BOOL filter_for_categories = FALSE); // if filter_for_categories is true, operate on folder preferred asset type + void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_ITEM); U32 getFilterTypes() const { return mFolders->getFilterTypes(); } void setFilterPermMask(PermissionMask filter_perm_mask); U32 getFilterPermMask() const { return mFolders->getFilterPermissions(); } diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 342d2bc739..754df33bd4 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -50,6 +50,7 @@ #include "llfloaterbuycurrency.h" #include "llfloaterreg.h" #include "llinventorybridge.h" +#include "llinventoryfilter.h" #include "llinventoryfunctions.h" #include "llpreviewanim.h" #include "llpreviewgesture.h" diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 951e74abf9..6aba8c0ebb 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -353,7 +353,7 @@ void LLPanelOutfitsInventory::initAccordionPanels() mAccordionPanels.resize(2); LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("outfitslist_accordionpanel"); - myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, TRUE); + myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY); myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); mAccordionPanels[0] = myoutfits_panel; mActivePanel = myoutfits_panel; |