diff options
Diffstat (limited to 'indra')
21 files changed, 239 insertions, 267 deletions
| diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index e09026fc33..d714d4623d 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -274,7 +274,7 @@ BOOL LLFolderView::canFocusChildren() const  	return FALSE;  } -BOOL LLFolderView::addFolder( LLFolderViewFolder* folder) +void LLFolderView::addFolder( LLFolderViewFolder* folder)  {  	LLFolderViewFolder::addFolder(folder); @@ -288,8 +288,6 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)  	//{  	//	mFolders.insert(mFolders.begin(), folder);  	//} - -	return TRUE;  }  void LLFolderView::closeAllFolders() @@ -1769,14 +1767,14 @@ void LLFolderView::update()  	// until that inventory is loaded up.  	LLFastTimer t2(FTM_INVENTORY); -	if (getFolderViewModel()->getFilter()->isModified() && getFolderViewModel()->getFilter()->isNotDefault()) +	if (getFolderViewModel()->getFilter().isModified() && getFolderViewModel()->getFilter().isNotDefault())  	{  		mNeedsAutoSelect = TRUE;  	} -	getFolderViewModel()->getFilter()->clearModified(); +	getFolderViewModel()->getFilter().clearModified();  	// filter to determine visibility before arranging -	filter(*(getFolderViewModel()->getFilter())); +	filter(getFolderViewModel()->getFilter());  	// automatically show matching items, and select first one if we had a selection  	if (mNeedsAutoSelect) @@ -1794,7 +1792,7 @@ void LLFolderView::update()  		// Open filtered folders for folder views with mAutoSelectOverride=TRUE.  		// Used by LLPlacesFolderView. -		if (getFolderViewModel()->getFilter()->showAllResults()) +		if (getFolderViewModel()->getFilter().showAllResults())  		{  			// these are named variables to get around gcc not binding non-const references to rvalues  			// and functor application is inherently non-const to allow for stateful functors diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h index 5ebd8f73ac..05beff9bd8 100644 --- a/indra/llui/llfolderview.h +++ b/indra/llui/llfolderview.h @@ -121,7 +121,7 @@ public:  	void closeAllFolders();  	void openTopLevelFolders(); -	virtual BOOL addFolder( LLFolderViewFolder* folder); +	virtual void addFolder( LLFolderViewFolder* folder);  	// Find width and height of this object and its children. Also  	// makes sure that this view and its children are the right size. diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 0f486d06c9..167c8123a1 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -221,11 +221,11 @@ void LLFolderViewItem::refresh()  	mIconOpen = vmi.getIconOpen();  	mIconOverlay = vmi.getIconOverlay(); -		if (mRoot->useLabelSuffix()) -		{ +	if (mRoot->useLabelSuffix()) +	{  		mLabelStyle = vmi.getLabelStyle();  		mLabelSuffix = vmi.getLabelSuffix(); -} +	}  	//TODO RN: make sure this logic still fires  	//std::string searchable_label(mLabel); @@ -255,7 +255,7 @@ void LLFolderViewItem::arrangeAndSet(BOOL set_selection,  	LLFolderView* root = getRoot();  	if (getParentFolder())  	{ -	getParentFolder()->requestArrange(); +		getParentFolder()->requestArrange();  	}  	if(set_selection)  	{ @@ -275,9 +275,9 @@ std::set<LLFolderViewItem*> LLFolderViewItem::getSelectionList() const  }  // addToFolder() returns TRUE if it succeeds. FALSE otherwise -BOOL LLFolderViewItem::addToFolder(LLFolderViewFolder* folder) +void LLFolderViewItem::addToFolder(LLFolderViewFolder* folder)  { -	return folder->addItem(this); +	folder->addItem(this);  } @@ -418,12 +418,12 @@ void LLFolderViewItem::rename(const std::string& new_name)  	{  		getViewModelItem()->renameItem(new_name); -			if(mParentFolder) -			{ -				mParentFolder->requestSort(); -			} -		} +		//if(mParentFolder) +		//{ +		//	mParentFolder->requestSort(); +		//}  	} +}  const std::string& LLFolderViewItem::getName( void ) const  { @@ -839,9 +839,9 @@ LLFolderViewFolder::~LLFolderViewFolder( void )  }  // addToFolder() returns TRUE if it succeeds. FALSE otherwise -BOOL LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder) +void LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder)  { -	return folder->addFolder(this); +	folder->addFolder(this);  }  static LLFastTimer::DeclareTimer FTM_ARRANGE("Arrange"); @@ -1008,11 +1008,6 @@ BOOL LLFolderViewFolder::needsArrange()  	return mLastArrangeGeneration < getRoot()->getArrangeGeneration();   } -void LLFolderViewFolder::requestSort() -{ -	getViewModelItem()->requestSort(); -} -  //TODO RN: get height resetting working  //void LLFolderViewFolder::setPassedFilter(BOOL passed, BOOL passed_folder, S32 filter_generation)  //{ @@ -1417,7 +1412,6 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item )  	}  	//item has been removed, need to update filter  	getViewModelItem()->removeChild(item->getViewModelItem()); -	getViewModelItem()->dirtyFilter();  	//because an item is going away regardless of filter status, force rearrange  	requestArrange();  	removeChild(item); @@ -1483,7 +1477,7 @@ BOOL LLFolderViewFolder::isRemovable()  }  // this is an internal method used for adding items to folders.  -BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item) +void LLFolderViewFolder::addItem(LLFolderViewItem* item)  {  	if (item->getParentFolder())  	{ @@ -1496,7 +1490,6 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)  	item->setRect(LLRect(0, 0, getRect().getWidth(), 0));  	item->setVisible(FALSE); -	addChild(item);  	// TODO RN - port creation date management to new code location  #if 0 @@ -1504,10 +1497,7 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)  	setCreationDate(llmax<time_t>(mCreationDate, item->getCreationDate()));  #endif -	// Handle sorting -	requestArrange(); -	requestSort(); - +	addChild(item);  	getViewModelItem()->addChild(item->getViewModelItem());  	// TODO RN - port creation date management to new code location  #if 0 @@ -1533,14 +1523,10 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)  	//	parentp = parentp->getParentFolder();  	//} - -	item->getViewModelItem()->dirtyFilter(); - -	return TRUE;  }  // this is an internal method used for adding items to folders.  -BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder) +void LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)  {  	if (folder->mParentFolder)  	{ @@ -1551,30 +1537,26 @@ BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)  	folder->setOrigin(0, 0);  	folder->reshape(getRect().getWidth(), 0);  	folder->setVisible(FALSE); -	addChild( folder );  	// rearrange all descendants too, as our indentation level might have changed -	folder->requestArrange(); -	requestSort(); +	//folder->requestArrange(); +	//requestSort(); +	addChild( folder );  	getViewModelItem()->addChild(folder->getViewModelItem()); -  //After addChild since addChild assigns parent to bubble up to when calling dirtyFilter -	folder->getViewModelItem()->dirtyFilter(); - -	return TRUE;  }  void LLFolderViewFolder::requestArrange()  {   	//if ( mLastArrangeGeneration != -1)  	{ -	mLastArrangeGeneration = -1;  -	// flag all items up to root -	if (mParentFolder) -	{ -		mParentFolder->requestArrange(); -	} +		mLastArrangeGeneration = -1;  +		// flag all items up to root +		if (mParentFolder) +		{ +			mParentFolder->requestArrange();  		}  	} +}  void LLFolderViewFolder::toggleOpen()  { diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index df007dd15d..baa12b38f3 100644 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -116,8 +116,8 @@ protected:  	// this is an internal method used for adding items to folders. A  	// no-op at this level, but reimplemented in derived classes. -	virtual BOOL addItem(LLFolderViewItem*) { return FALSE; } -	virtual BOOL addFolder(LLFolderViewFolder*) { return FALSE; } +	virtual void addItem(LLFolderViewItem*) { } +	virtual void addFolder(LLFolderViewFolder*) { }  	static LLFontGL* getLabelFontForStyle(U8 style); @@ -131,7 +131,7 @@ public:  	virtual ~LLFolderViewItem( void );  	// addToFolder() returns TRUE if it succeeds. FALSE otherwise -	virtual BOOL addToFolder(LLFolderViewFolder* folder); +	virtual void addToFolder(LLFolderViewFolder* folder);  	// Finds width and height of this object and it's children.  Also  	// makes sure that this view and it's children are the right size. @@ -297,7 +297,7 @@ public:  	LLFolderViewItem* getPreviousFromChild( LLFolderViewItem*, BOOL include_children = TRUE  );  	// addToFolder() returns TRUE if it succeeds. FALSE otherwise -	virtual BOOL addToFolder(LLFolderViewFolder* folder); +	virtual void addToFolder(LLFolderViewFolder* folder);  	// Finds width and height of this object and it's children.  Also  	// makes sure that this view and it's children are the right size. @@ -356,8 +356,6 @@ public:  	// Called when a child is refreshed.  	virtual void requestArrange(); -	virtual void requestSort(); -  	// internal method which doesn't update the entire view. This  	// method was written because the list iterators destroy the state  	// of other iterations, thus, we can't arrange while iterating @@ -381,8 +379,6 @@ public:  	void applyFunctorToChildren(LLFolderViewFunctor& functor);  	virtual void openItem( void ); -	virtual BOOL addItem(LLFolderViewItem* item); -	virtual BOOL addFolder( LLFolderViewFolder* folder);  	// LLView functionality  	virtual BOOL handleHover(S32 x, S32 y, MASK mask); @@ -412,6 +408,14 @@ public:  	LLFolderViewFolder* getCommonAncestor(LLFolderViewItem* item_a, LLFolderViewItem* item_b, bool& reverse);  	void gatherChildRangeExclusive(LLFolderViewItem* start, LLFolderViewItem* end, bool reverse,  std::vector<LLFolderViewItem*>& items); +protected: +	friend void LLFolderViewItem::addToFolder(LLFolderViewFolder*); +	// internal functions for tracking folders and items separately +	// use addToFolder() virtual method to ensure folders are always added to mFolders +	// and not mItems +	void addItem(LLFolderViewItem* item); +	void addFolder( LLFolderViewFolder* folder); +  public:  	//WARNING: do not call directly...use the appropriate LLFolderViewModel-derived class instead  	template<typename SORT_FUNC> void sortFolders(const SORT_FUNC& func) { mFolders.sort(func); } diff --git a/indra/llui/llfolderviewmodel.cpp b/indra/llui/llfolderviewmodel.cpp index dc6e4d754b..6aa4a63edc 100644 --- a/indra/llui/llfolderviewmodel.cpp +++ b/indra/llui/llfolderviewmodel.cpp @@ -36,18 +36,18 @@ bool LLFolderViewModelCommon::needsSort(LLFolderViewModelItem* item)  std::string LLFolderViewModelCommon::getStatusText()  { -	if (!contentsReady() || mFolderView->getViewModelItem()->getLastFilterGeneration() < getFilter()->getCurrentGeneration()) +	if (!contentsReady() || mFolderView->getViewModelItem()->getLastFilterGeneration() < getFilter().getCurrentGeneration())  	{  		return LLTrans::getString("Searching");  	}  	else  	{ -		return getFilter()->getEmptyLookupMessage(); +		return getFilter().getEmptyLookupMessage();  	}  }  void LLFolderViewModelCommon::filter()  { -	getFilter()->setFilterCount(llclamp(LLUI::sSettingGroups["config"]->getS32("FilterItemsPerFrame"), 1, 5000)); -	mFolderView->getViewModelItem()->filter(*getFilter()); +	getFilter().setFilterCount(llclamp(LLUI::sSettingGroups["config"]->getS32("FilterItemsPerFrame"), 1, 5000)); +	mFolderView->getViewModelItem()->filter(getFilter());  } diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h index acdec53602..81de15923a 100644 --- a/indra/llui/llfolderviewmodel.h +++ b/indra/llui/llfolderviewmodel.h @@ -107,6 +107,24 @@ public:  	virtual S32 				getFirstRequiredGeneration() const = 0;  }; +class LLFolderViewModelInterface +{ +public: +	virtual ~LLFolderViewModelInterface() {} +	virtual void requestSortAll() = 0; + +	virtual void sort(class LLFolderViewFolder*) = 0; +	virtual void filter() = 0; + +	virtual bool contentsReady() = 0; +	virtual void setFolderView(LLFolderView* folder_view) = 0; +	virtual LLFolderViewFilter& getFilter() = 0; +	virtual const LLFolderViewFilter& getFilter() const = 0; +	virtual std::string getStatusText() = 0; + +	virtual bool startDrag(std::vector<LLFolderViewModelItem*>& items) = 0; +}; +  // This is am abstract base class that users of the folderview classes  // would use to bridge the folder view with the underlying data  class LLFolderViewModelItem @@ -188,15 +206,15 @@ protected:  class LLFolderViewModelItemCommon : public LLFolderViewModelItem  {  public: -	LLFolderViewModelItemCommon() +	LLFolderViewModelItemCommon(LLFolderViewModelInterface& root_view_model)  	:	mSortVersion(-1),  		mPassedFilter(true),  		mPassedFolderFilter(true), -		mPrevPassedAllFilters(false),  		mFolderViewItem(NULL),  		mLastFilterGeneration(-1),  		mMostFilteredDescendantGeneration(-1), -		mParent(NULL) +		mParent(NULL), +		mRootViewModel(root_view_model)  	{  		std::for_each(mChildren.begin(), mChildren.end(), DeletePointer());  	} @@ -220,20 +238,55 @@ public:  	{   		mChildren.push_back(child);   		child->setParent(this);  +		dirtyFilter(); +		requestSort();  	}  	virtual void removeChild(LLFolderViewModelItem* child)   	{   		mChildren.remove(child);   		child->setParent(NULL);  +		dirtyFilter(); +	} + +	void setPassedFilter(bool passed, bool passed_folder, S32 filter_generation) +	{ +		mPassedFilter = passed; +		mPassedFolderFilter = passed_folder; +		mLastFilterGeneration = filter_generation; +	} + +	virtual bool potentiallyVisible() +	{ +		return passedFilter() // we've passed the filter +			|| getLastFilterGeneration() < mRootViewModel.getFilter().getFirstSuccessGeneration() // or we don't know yet +			|| descendantsPassedFilter();  	} +	virtual bool passedFilter(S32 filter_generation = -1)  +	{  +		if (filter_generation < 0)  +			filter_generation = mRootViewModel.getFilter().getFirstSuccessGeneration(); + +		bool passed_folder_filter = mPassedFolderFilter && mLastFilterGeneration >= filter_generation; +		bool passed_filter = mPassedFilter && mLastFilterGeneration >= filter_generation; +		return passed_folder_filter +				&& (descendantsPassedFilter(filter_generation) +					|| passed_filter); +	} + +	virtual bool descendantsPassedFilter(S32 filter_generation = -1) +	{  +		if (filter_generation < 0) filter_generation = mRootViewModel.getFilter().getFirstSuccessGeneration(); +		return mMostFilteredDescendantGeneration >= filter_generation;  +	} + +  protected:  	virtual void setParent(LLFolderViewModelItem* parent) { mParent = parent; }  	S32						mSortVersion;  	bool					mPassedFilter;  	bool					mPassedFolderFilter; -	bool					mPrevPassedAllFilters;  	S32						mLastFilterGeneration;  	S32						mMostFilteredDescendantGeneration; @@ -242,28 +295,13 @@ protected:  	typedef std::list<LLFolderViewModelItem*> child_list_t;  	child_list_t			mChildren;  	LLFolderViewModelItem*	mParent; +	LLFolderViewModelInterface& mRootViewModel;  	void setFolderViewItem(LLFolderViewItem* folder_view_item) { mFolderViewItem = folder_view_item;}  	LLFolderViewItem*		mFolderViewItem;  }; -class LLFolderViewModelInterface -{ -public: -	virtual ~LLFolderViewModelInterface() {} -	virtual void requestSortAll() = 0; - -	virtual void sort(class LLFolderViewFolder*) = 0; -	virtual void filter() = 0; - -	virtual bool contentsReady() = 0; -	virtual void setFolderView(LLFolderView* folder_view) = 0; -	virtual LLFolderViewFilter* getFilter() = 0; -	virtual const LLFolderViewFilter* getFilter() const = 0; -	virtual std::string getStatusText() = 0; -	virtual bool startDrag(std::vector<LLFolderViewModelItem*>& items) = 0; -};  class LLFolderViewModelCommon : public LLFolderViewModelInterface  { @@ -307,8 +345,8 @@ public:  	virtual const SortType& getSorter() const 		 { return mSorter; }  	virtual void setSorter(const SortType& sorter) 	 { mSorter = sorter; requestSortAll(); } -	virtual FilterType* getFilter() 				 { return &mFilter; } -	virtual const FilterType* getFilter() const		 { return &mFilter; } +	virtual FilterType& getFilter() 				 { return mFilter; } +	virtual const FilterType& getFilter() const		 { return mFilter; }  	virtual void setFilter(const FilterType& filter) { mFilter = filter; }  	// TODO RN: remove this and put all filtering logic in view model diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp index e4ed97892e..18ed36d0f3 100644 --- a/indra/newview/llfloateroutbox.cpp +++ b/indra/newview/llfloateroutbox.cpp @@ -251,7 +251,7 @@ void LLFloaterOutbox::setupOutbox(const LLUUID& outboxId)  	// Set the sort order newest to oldest  	mOutboxInventoryPanel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME);	 -	mOutboxInventoryPanel->getFilter()->markDefault(); +	mOutboxInventoryPanel->getFilter().markDefault();  	fetchOutboxContents(); diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index 13ca73917b..21218850a6 100644 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -109,7 +109,12 @@ bool LLFolderViewModelInventory::contentsReady()  void LLFolderViewModelItemInventory::requestSort()  {  	LLFolderViewModelItemCommon::requestSort(); -	if (mRootViewModel.getSorter().isByDate()) +	LLFolderViewFolder* folderp = dynamic_cast<LLFolderViewFolder*>(mFolderViewItem); +	if (folderp) +	{ +		folderp->requestArrange(); +	} +	if (static_cast<LLFolderViewModelInventory&>(mRootViewModel).getSorter().isByDate())  	{  		// sort by date potentially affects parent folders which use a date  		// derived from newest item in them @@ -120,35 +125,9 @@ void LLFolderViewModelItemInventory::requestSort()  	}  } -bool LLFolderViewModelItemInventory::potentiallyVisible() -{ -	return passedFilter() // we've passed the filter -		|| getLastFilterGeneration() < mRootViewModel.getFilter()->getFirstSuccessGeneration() // or we don't know yet -		|| descendantsPassedFilter(); -} - -bool LLFolderViewModelItemInventory::passedFilter(S32 filter_generation)  -{  -	if (filter_generation < 0)  -		filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration(); - -	return mPassedFolderFilter  -		&& (descendantsPassedFilter(filter_generation) -			|| (mLastFilterGeneration >= filter_generation  -				&& mPassedFilter)); -} - -bool LLFolderViewModelItemInventory::descendantsPassedFilter(S32 filter_generation) -{  -	if (filter_generation < 0) filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration(); -	return mMostFilteredDescendantGeneration >= filter_generation;  -} -  void LLFolderViewModelItemInventory::setPassedFilter(bool passed, bool passed_folder, S32 filter_generation)  { -	mPassedFilter = passed; -	mPassedFolderFilter = passed_folder; -	mLastFilterGeneration = filter_generation; +	LLFolderViewModelItemCommon::setPassedFilter(passed, passed_folder, filter_generation);  	bool passed_filter_before = mPrevPassedAllFilters;  	mPrevPassedAllFilters = passedFilter(filter_generation); @@ -324,3 +303,8 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a,  	}  } +LLFolderViewModelItemInventory::LLFolderViewModelItemInventory( class LLFolderViewModelInventory& root_view_model )  +	:	LLFolderViewModelItemCommon(root_view_model), +	mPrevPassedAllFilters(false) +{ +} diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h index ab67c93897..5b0ad5e46e 100644 --- a/indra/newview/llfolderviewmodelinventory.h +++ b/indra/newview/llfolderviewmodelinventory.h @@ -37,9 +37,7 @@ class LLFolderViewModelItemInventory  	:	public LLFolderViewModelItemCommon  {  public: -	LLFolderViewModelItemInventory(class LLFolderViewModelInventory& root_view_model) -	:	mRootViewModel(root_view_model) -	{} +	LLFolderViewModelItemInventory(class LLFolderViewModelInventory& root_view_model);  	virtual const LLUUID& getUUID() const = 0;  	virtual time_t getCreationDate() const = 0;	// UTC seconds  	virtual void setCreationDate(time_t creation_date_utc) = 0; @@ -55,9 +53,6 @@ public:  	virtual EInventorySortGroup getSortGroup() const = 0;  	virtual LLInventoryObject* getInventoryObject() const = 0;  	virtual void requestSort(); -	virtual bool potentiallyVisible(); -	virtual bool passedFilter(S32 filter_generation = -1); -	virtual bool descendantsPassedFilter(S32 filter_generation = -1);  	virtual void setPassedFilter(bool filtered, bool filtered_folder, S32 filter_generation);  	virtual void filter( LLFolderViewFilter& filter);  	virtual void filterChildItem( LLFolderViewModelItem* item, LLFolderViewFilter& filter); @@ -66,25 +61,36 @@ public:  	virtual LLToolDragAndDrop::ESource getDragSource() const = 0;  protected: -	class LLFolderViewModelInventory& mRootViewModel; +	bool								mPrevPassedAllFilters;  };  class LLInventorySort  {  public: -	LLInventorySort(U32 order = 0) -		:	mSortOrder(order), -		mByDate(false), -		mSystemToTop(false), -		mFoldersByName(false) +	struct Params : public LLInitParam::Block<Params>  	{ -		mByDate = (order & LLInventoryFilter::SO_DATE); -		mSystemToTop = (order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP); -		mFoldersByName = (order & LLInventoryFilter::SO_FOLDERS_BY_NAME); +		Optional<S32> order; + +		Params() +		:	order("order", 0) +		{} +	}; + +	LLInventorySort(S32 order = 0) +	{ +		fromParams(Params().order(order));  	}  	bool isByDate() const { return mByDate; }  	U32 getSortOrder() const { return mSortOrder; } +	void toParams(Params& p) { p.order(mSortOrder);} +	void fromParams(Params& p)  +	{  +		mSortOrder = p.order;  +		mByDate = (mSortOrder & LLInventoryFilter::SO_DATE); +		mSystemToTop = (mSortOrder & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP); +		mFoldersByName = (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME); +	}  	bool operator()(const LLFolderViewModelItemInventory* const& a, const LLFolderViewModelItemInventory* const& b) const;  private: diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 14616ca7ab..43c4ce1278 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -900,7 +900,7 @@ LLInventoryModel* LLInvFVBridge::getInventoryModel() const  LLInventoryFilter* LLInvFVBridge::getInventoryFilter() const  {  	LLInventoryPanel* panel = mInventoryPanel.get(); -	return panel ? panel->getFilter() : NULL; +	return panel ? &(panel->getFilter()) : NULL;  }  BOOL LLInvFVBridge::isItemInTrash() const diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index b4be927b09..7993dd04c5 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -69,7 +69,6 @@ LLInventoryFilter::LLInventoryFilter(const Params& p)  	mFilterModified(FILTER_NONE),  	mEmptyLookupMessage("InventoryNoMatchingItems"),      mFilterOps(p.filter_ops), -	mOrder(p.sort_order),  	mFilterSubString(p.substring),  	mCurrentGeneration(0),  	mFirstRequiredGeneration(0), @@ -703,15 +702,6 @@ void LLInventoryFilter::setShowFolderState(EFolderShow state)  	}  } -void LLInventoryFilter::setSortOrder(U32 order) -{ -	if (mOrder != order) -	{ -		mOrder = order; -		setModified(); -	} -} -  void LLInventoryFilter::markDefault()  {  	mDefaultFilterOps = mFilterOps; @@ -944,7 +934,6 @@ LLInventoryFilter& LLInventoryFilter::operator=( const  LLInventoryFilter&  othe  	setShowFolderState(other.getShowFolderState());  	setFilterPermissions(other.getFilterPermissions());  	setFilterSubString(other.getFilterSubString()); -	setSortOrder(other.getSortOrder());  	setDateRangeLastLogoff(other.isSinceLogoff());  	return *this;  } @@ -961,7 +950,6 @@ void LLInventoryFilter::toParams(Params& params) const  	params.filter_ops.show_folder_state = getShowFolderState();  	params.filter_ops.permissions = getFilterPermissions();  	params.substring = getFilterSubString(); -	params.sort_order = getSortOrder();  	params.since_logoff = isSinceLogoff();  } @@ -980,7 +968,6 @@ void LLInventoryFilter::fromParams(const Params& params)  	setShowFolderState(params.filter_ops.show_folder_state);  	setFilterPermissions(params.filter_ops.permissions);  	setFilterSubString(params.substring); -	setSortOrder(params.sort_order);  	setDateRangeLastLogoff(params.since_logoff);  } @@ -1030,10 +1017,6 @@ LLInventoryFilter::EFolderShow LLInventoryFilter::getShowFolderState() const  {   	return mFilterOps.mShowFolderState;   } -U32 LLInventoryFilter::getSortOrder() const  -{  -	return mOrder;  -}  void LLInventoryFilter::setFilterCount(S32 count)   {  diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index af245a9c3b..b560730873 100644 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -74,8 +74,8 @@ public:  	{  		struct DateRange : public LLInitParam::Block<DateRange>  		{ -			Optional<time_t> min_date; -			Optional<time_t> max_date; +			Optional<time_t>	min_date, +								max_date;  			DateRange()  			:	min_date("min_date", time_min()), @@ -115,18 +115,18 @@ public:  		FilterOps(const Params& = Params());  		U32 			mFilterTypes; - -		U64				mFilterObjectTypes;   // For _OBJECT -		U64				mFilterWearableTypes; -		U64				mFilterCategoryTypes; // For _CATEGORY +		U64				mFilterObjectTypes,   // For _OBJECT +						mFilterWearableTypes, +						mFilterLinks, +						mFilterCategoryTypes; // For _CATEGORY  		LLUUID      	mFilterUUID; 		  // for UUID -		time_t			mMinDate; -		time_t			mMaxDate; +		time_t			mMinDate, +						mMaxDate;  		U32				mHoursAgo; +  		EFolderShow		mShowFolderState;  		PermissionMask	mPermissions; -		U64				mFilterLinks;  	};  	struct Params : public LLInitParam::Block<Params> @@ -134,14 +134,12 @@ public:  		Optional<std::string>		name;  		Optional<FilterOps::Params>	filter_ops;  		Optional<std::string>		substring; -		Optional<U32>				sort_order;  		Optional<bool>				since_logoff;  		Params()  		:	name("name"),  			filter_ops(""),  			substring("substring"), -			sort_order("sort_order"),  			since_logoff("since_logoff")  		{}  	}; @@ -203,9 +201,6 @@ public:  	void 				setShowFolderState( EFolderShow state);  	EFolderShow 		getShowFolderState() const; -	void 				setSortOrder(U32 order); -	U32 				getSortOrder() const; -  	void 				setEmptyLookupMessage(const std::string& message);  	std::string			getEmptyLookupMessage() const; @@ -261,8 +256,6 @@ private:  	bool 				checkAgainstFilterLinks(const class LLFolderViewModelItemInventory* listener) const;  	bool				checkAgainstClipboard(const LLUUID& object_id) const; -	U32						mOrder; -  	FilterOps				mFilterOps;  	FilterOps				mDefaultFilterOps; diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index e9b128e836..1b3391f7ee 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -239,13 +239,13 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)  	}  	// hide inbox -	getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX)); -	getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX)); +	getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX)); +	getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX));  	// set the filter for the empty folder if the debug setting is on  	if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders"))  	{ -		getFilter()->setFilterEmptySystemFolders(); +		getFilter().setFilterEmptySystemFolders();  	}  	// keep track of the clipboard state so that we avoid filtering too much @@ -285,18 +285,18 @@ void LLInventoryPanel::draw()  	if (mClipboardState != LLClipboard::instance().getGeneration())  	{  		mClipboardState = LLClipboard::instance().getGeneration(); -		getFilter()->setModified(LLClipboard::instance().isCutMode() ? LLInventoryFilter::FILTER_MORE_RESTRICTIVE : LLInventoryFilter::FILTER_LESS_RESTRICTIVE); +		getFilter().setModified(LLClipboard::instance().isCutMode() ? LLInventoryFilter::FILTER_MORE_RESTRICTIVE : LLInventoryFilter::FILTER_LESS_RESTRICTIVE);  	}  	LLPanel::draw();  } -const LLInventoryFilter* LLInventoryPanel::getFilter() const +const LLInventoryFilter& LLInventoryPanel::getFilter() const  {  	return getFolderViewModel()->getFilter();  } -LLInventoryFilter* LLInventoryPanel::getFilter() +LLInventoryFilter& LLInventoryPanel::getFilter()  {  	return getFolderViewModel()->getFilter();  } @@ -304,50 +304,49 @@ LLInventoryFilter* LLInventoryPanel::getFilter()  void LLInventoryPanel::setFilterTypes(U64 types, LLInventoryFilter::EFilterType filter_type)  {  	if (filter_type == LLInventoryFilter::FILTERTYPE_OBJECT) -		getFilter()->setFilterObjectTypes(types); +		getFilter().setFilterObjectTypes(types);  	if (filter_type == LLInventoryFilter::FILTERTYPE_CATEGORY) -		getFilter()->setFilterCategoryTypes(types); +		getFilter().setFilterCategoryTypes(types);  }  U32 LLInventoryPanel::getFilterObjectTypes() const   {  -	return getFilter()->getFilterObjectTypes(); +	return getFilter().getFilterObjectTypes();  }  U32 LLInventoryPanel::getFilterPermMask() const   {  -	return getFilter()->getFilterPermissions(); +	return getFilter().getFilterPermissions();  }  void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask)  { -	getFilter()->setFilterPermissions(filter_perm_mask); +	getFilter().setFilterPermissions(filter_perm_mask);  }  void LLInventoryPanel::setFilterWearableTypes(U64 types)  { -	getFilter()->setFilterWearableTypes(types); +	getFilter().setFilterWearableTypes(types);  }  void LLInventoryPanel::setFilterSubString(const std::string& string)  { -	getFilter()->setFilterSubString(string); +	getFilter().setFilterSubString(string);  }  const std::string LLInventoryPanel::getFilterSubString()   {  -	return getFilter()->getFilterSubString(); +	return getFilter().getFilterSubString();  }  void LLInventoryPanel::setSortOrder(U32 order)  { -        LLInventorySort sorter(order); -	getFilter()->setSortOrder(order); +    LLInventorySort sorter(order);  	if (order != getFolderViewModel()->getSorter().getSortOrder())  	{ -		getFolderViewModel()->setSorter(LLInventorySort(order)); +		getFolderViewModel()->setSorter(sorter);  		// try to keep selection onscreen, even if it wasn't to start with  		mFolderRoot->scrollToShowSelection();  	} @@ -360,27 +359,27 @@ U32 LLInventoryPanel::getSortOrder() const  void LLInventoryPanel::setSinceLogoff(BOOL sl)  { -	getFilter()->setDateRangeLastLogoff(sl); +	getFilter().setDateRangeLastLogoff(sl);  }  void LLInventoryPanel::setHoursAgo(U32 hours)  { -	getFilter()->setHoursAgo(hours); +	getFilter().setHoursAgo(hours);  }  void LLInventoryPanel::setFilterLinks(U64 filter_links)  { -	getFilter()->setFilterLinks(filter_links); +	getFilter().setFilterLinks(filter_links);  }  void LLInventoryPanel::setShowFolderState(LLInventoryFilter::EFolderShow show)  { -	getFilter()->setShowFolderState(show); +	getFilter().setShowFolderState(show);  }  LLInventoryFilter::EFolderShow LLInventoryPanel::getShowFolderState()  { -	return getFilter()->getShowFolderState(); +	return getFilter().getShowFolderState();  }  void LLInventoryPanel::modelChanged(U32 mask) @@ -473,7 +472,7 @@ void LLInventoryPanel::modelChanged(U32 mask)  		{  			if (view_folder)  			{ -				view_folder->requestSort(); +				view_folder->getViewModelItem()->requestSort();  			}  		}	 @@ -1088,7 +1087,7 @@ bool LLInventoryPanel::attachObject(const LLSD& userdata)  BOOL LLInventoryPanel::getSinceLogoff()  { -	return getFilter()->isSinceLogoff(); +	return getFilter().isSinceLogoff();  }  // DEBUG ONLY @@ -1214,12 +1213,12 @@ void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const L  void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type)  { -	getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << folder_type)); +	getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << folder_type));  }  BOOL LLInventoryPanel::getIsHiddenFolderType(LLFolderType::EType folder_type) const  { -	return !(getFilter()->getFilterCategoryTypes() & (1ULL << folder_type)); +	return !(getFilter().getFilterCategoryTypes() & (1ULL << folder_type));  }  void LLInventoryPanel::addItemID( const LLUUID& id, LLFolderViewItem*   itemp ) @@ -1321,7 +1320,7 @@ public:  	{  		LLInventoryPanel::initFromParams(p);  		// turn on inbox for recent items -		getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() | (1ULL << LLFolderType::FT_INBOX)); +		getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() | (1ULL << LLFolderType::FT_INBOX));  	}  protected: diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index b66b53f642..e9bfcb0ccf 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -120,6 +120,12 @@ public:  		{}  	}; +	struct InventoryState : public LLInitParam::Block<InventoryState> +	{ +		Mandatory<LLInventoryFilter::Params> filter; +		Mandatory<LLInventorySort::Params> sort; +	}; +  	//--------------------------------------------------------------------  	// Initialization  	//-------------------------------------------------------------------- @@ -155,8 +161,8 @@ public:  	void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus);  	void setSelectCallback(const boost::function<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)>& cb);  	void clearSelection(); -	LLInventoryFilter* getFilter(); -	const LLInventoryFilter* getFilter() const; +	LLInventoryFilter& getFilter(); +	const LLInventoryFilter& getFilter() const;  	void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT);  	U32 getFilterObjectTypes() const;  	void setFilterPermMask(PermissionMask filter_perm_mask); diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 1a4f3708ac..9225ea3d53 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -247,10 +247,7 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string)  		LLPlacesInventoryPanel* inventory_list = dynamic_cast<LLPlacesInventoryPanel*>(tab->getAccordionView());  		if (NULL == inventory_list) continue; -		if (inventory_list->getFilter()) -		{ -			filter_list(inventory_list, string); -		} +		filter_list(inventory_list, string);  	}  	if (sFilterSubString != string) @@ -365,9 +362,6 @@ void LLLandmarksPanel::onSelectorButtonClicked()  void LLLandmarksPanel::updateShowFolderState()  { -	if (!mLandmarksInventoryPanel->getFilter()) -		return; -  	bool show_all_folders =   mLandmarksInventoryPanel->getFilterSubString().empty();  	if (show_all_folders)  	{ @@ -547,7 +541,7 @@ void LLLandmarksPanel::initFavoritesInventoryPanel()  	mFavoritesInventoryPanel = getChild<LLPlacesInventoryPanel>("favorites_list");  	initLandmarksPanel(mFavoritesInventoryPanel); -	mFavoritesInventoryPanel->getFilter()->setEmptyLookupMessage("FavoritesNoMatchingItems"); +	mFavoritesInventoryPanel->getFilter().setEmptyLookupMessage("FavoritesNoMatchingItems");  	initAccordion("tab_favorites", mFavoritesInventoryPanel, true);  } @@ -558,12 +552,7 @@ void LLLandmarksPanel::initLandmarksInventoryPanel()  	initLandmarksPanel(mLandmarksInventoryPanel); -	// Check if mLandmarksInventoryPanel is properly initialized and has a Filter created. -	// In case of a dummy widget getFilter() will return NULL. -	if (mLandmarksInventoryPanel->getFilter()) -	{ -		mLandmarksInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS); -	} +	mLandmarksInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);  	// subscribe to have auto-rename functionality while creating New Folder  	mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2)); @@ -599,12 +588,7 @@ void LLLandmarksPanel::initLibraryInventoryPanel()  void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list)  { -	// In case of a dummy widget further we have no Folder View widget and no Filter, -	// so further initialization leads to crash. -	if (!inventory_list->getFilter()) -		return; - -	inventory_list->getFilter()->setEmptyLookupMessage("PlacesNoMatchingItems"); +	inventory_list->getFilter().setEmptyLookupMessage("PlacesNoMatchingItems");  	inventory_list->setFilterTypes(0x1 << LLInventoryType::IT_LANDMARK);  	inventory_list->setSelectCallback(boost::bind(&LLLandmarksPanel::onSelectionChange, this, inventory_list, _1, _2)); diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index fea27b37d3..e1aa70cc4a 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -89,9 +89,9 @@ public:  	static void selectNoTypes(void* user_data);  private:  	LLPanelMainInventory*	mPanelMainInventory; -	LLSpinCtrl*			mSpinSinceDays; -	LLSpinCtrl*			mSpinSinceHours; -	LLInventoryFilter*	mFilter; +	LLSpinCtrl*				mSpinSinceDays; +	LLSpinCtrl*				mSpinSinceHours; +	LLInventoryFilter*		mFilter;  };  ///---------------------------------------------------------------------------- @@ -131,7 +131,7 @@ BOOL LLPanelMainInventory::postBuild()  	mFilterTabs = getChild<LLTabContainer>("inventory filter tabs");  	mFilterTabs->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterSelected, this)); -	//panel->getFilter()->markDefault(); +	//panel->getFilter().markDefault();  	// Set up the default inv. panel/filter settings.  	mActivePanel = getChild<LLInventoryPanel>("All Items"); @@ -139,7 +139,7 @@ BOOL LLPanelMainInventory::postBuild()  	{  		// "All Items" is the previous only view, so it gets the InventorySortOrder  		mActivePanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER)); -		mActivePanel->getFilter()->markDefault(); +		mActivePanel->getFilter().markDefault();  		mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);  		mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2));  		mResortActivePanel = true; @@ -150,7 +150,7 @@ BOOL LLPanelMainInventory::postBuild()  		recent_items_panel->setSinceLogoff(TRUE);  		recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE);  		recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); -		recent_items_panel->getFilter()->markDefault(); +		recent_items_panel->getFilter().markDefault();  		recent_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, recent_items_panel, _1, _2));  	} @@ -169,14 +169,14 @@ BOOL LLPanelMainInventory::postBuild()  		// Note that the "All Items" settings do not persist.  		if(recent_items_panel)  		{ -			if(savedFilterState.has(recent_items_panel->getFilter()->getName())) +			if(savedFilterState.has(recent_items_panel->getFilter().getName()))  			{  				LLSD recent_items = savedFilterState.get( -					recent_items_panel->getFilter()->getName()); +					recent_items_panel->getFilter().getName());  				LLInventoryFilter::Params p;  				LLParamSDParser parser;  				parser.readSD(recent_items, p); -				recent_items_panel->getFilter()->fromParams(p); +				recent_items_panel->getFilter().fromParams(p);  			}  		} @@ -213,29 +213,29 @@ LLPanelMainInventory::~LLPanelMainInventory( void )  	LLInventoryPanel* all_items_panel = getChild<LLInventoryPanel>("All Items");  	if (all_items_panel)  	{ -		LLInventoryFilter* filter = all_items_panel->getFilter(); -		if (filter) +		LLSD filterState; +		LLInventoryPanel::InventoryState p; +		all_items_panel->getFilter().toParams(p.filter); +		all_items_panel->getRootViewModel().getSorter().toParams(p.sort); +		if (p.validateBlock(false))  		{ -			LLSD filterState; -			LLInventoryFilter::Params p; -			filter->toParams(p); -			if (p.validateBlock(false)) -			{ -				LLParamSDParser().writeSD(filterState, p); -				filterRoot[filter->getName()] = filterState; -			} +			LLParamSDParser().writeSD(filterState, p); +			filterRoot[all_items_panel->getName()] = filterState;  		}  	} -	LLInventoryFilter* filter = findChild<LLInventoryPanel>("Recent Items")->getFilter(); -	if (filter) +	LLInventoryPanel* panel = findChild<LLInventoryPanel>("Recent Items"); +	if (panel)  	{  		LLSD filterState; -		LLInventoryFilter::Params p; -		filter->toParams(p); -		LLParamSDParser parser; -		parser.writeSD(filterState, p); -		filterRoot[filter->getName()] = filterState; +		LLInventoryPanel::InventoryState p; +		panel->getFilter().toParams(p.filter); +		panel->getRootViewModel().getSorter().toParams(p.sort); +		if (p.validateBlock(false)) +		{ +			LLParamSDParser().writeSD(filterState, p); +			filterRoot[panel->getName()] = filterState; +		}  	}  	std::ostringstream filterSaveName; @@ -321,7 +321,7 @@ void LLPanelMainInventory::doCreate(const LLSD& userdata)  void LLPanelMainInventory::resetFilters()  {  	LLFloaterInventoryFinder *finder = getFinder(); -	getActivePanel()->getFilter()->resetDefault(); +	getActivePanel()->getFilter().resetDefault();  	if (finder)  	{  		finder->updateElementsFromFilter(); @@ -426,7 +426,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )  	}  	// save current folder open state if no filter currently applied -	if (!mActivePanel->getFilter()->isNotDefault()) +	if (!mActivePanel->getFilter().isNotDefault())  	{  		mSavedFolderState->setApply(FALSE);  		mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); @@ -488,13 +488,13 @@ void LLPanelMainInventory::onFilterSelected()  	}  	setFilterSubString(mFilterSubString); -	LLInventoryFilter* filter = mActivePanel->getFilter(); +	LLInventoryFilter& filter = mActivePanel->getFilter();  	LLFloaterInventoryFinder *finder = getFinder();  	if (finder)  	{ -		finder->changeFilter(filter); +		finder->changeFilter(&filter);  	} -	if (filter->isActive()) +	if (filter.isActive())  	{  		// If our filter is active we may be the first thing requiring a fetch so we better start it here.  		LLInventoryModelBackgroundFetch::instance().start(); @@ -607,7 +607,7 @@ void LLPanelMainInventory::onFocusReceived()  void LLPanelMainInventory::setFilterTextFromFilter()   {  -	mFilterText = mActivePanel->getFilter()->getFilterText();  +	mFilterText = mActivePanel->getFilter().getFilterText();   }  void LLPanelMainInventory::toggleFindOptions() @@ -657,7 +657,7 @@ LLFloaterInventoryFinder* LLPanelMainInventory::getFinder()  LLFloaterInventoryFinder::LLFloaterInventoryFinder(LLPanelMainInventory* inventory_view) :	  	LLFloater(LLSD()),  	mPanelMainInventory(inventory_view), -	mFilter(inventory_view->getPanel()->getFilter()) +	mFilter(&inventory_view->getPanel()->getFilter())  {  	buildFromFile("floater_inventory_view_finder.xml");  	updateElementsFromFilter(); @@ -1082,14 +1082,14 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)  		const LLUUID& item_id = static_cast<LLFolderViewModelItemInventory*>(current_item->getViewModelItem())->getUUID();  		const std::string &item_name = current_item->getViewModelItem()->getName();  		mFilterSubString = item_name; -		LLInventoryFilter *filter = mActivePanel->getFilter(); -		filter->setFilterSubString(item_name); +		LLInventoryFilter &filter = mActivePanel->getFilter(); +		filter.setFilterSubString(item_name);  		mFilterEditor->setText(item_name);  		mFilterEditor->setFocus(TRUE); -		filter->setFilterUUID(item_id); -		filter->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); -		filter->setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS); +		filter.setFilterUUID(item_id); +		filter.setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); +		filter.setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS);  	}  } diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index 3547156197..ea0521e3a7 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -95,13 +95,13 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()  	// Set the sort order newest to oldest  	mInventoryPanel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_DATE); -	mInventoryPanel->getFilter()->markDefault(); +	mInventoryPanel->getFilter().markDefault();  	// Set selection callback for proper update of inventory status buttons  	mInventoryPanel->setSelectCallback(boost::bind(&LLPanelMarketplaceInbox::onSelectionChange, this));  	// Set up the note to display when the inbox is empty -	mInventoryPanel->getFilter()->setEmptyLookupMessage("InventoryInboxNoItems"); +	mInventoryPanel->getFilter().setEmptyLookupMessage("InventoryInboxNoItems");  	// Hide the placeholder text  	inbox_inventory_placeholder->setVisible(FALSE); diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index 8ad3929999..0d3fbe66d7 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -182,9 +182,9 @@ LLInboxFolderViewItem::LLInboxFolderViewItem(const Params& p)  #endif  } -BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder) +void LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder)  { -	BOOL retval = LLFolderViewItem::addToFolder(folder); +	LLFolderViewItem::addToFolder(folder);  #if SUPPORTING_FRESH_ITEM_COUNT  	// Compute freshness if our parent is the root folder for the inbox @@ -193,8 +193,6 @@ BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder)  		computeFreshness();  	}  #endif -	 -	return retval;  }  BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask) diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h index d8b8a2fe63..098969aca6 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.h +++ b/indra/newview/llpanelmarketplaceinboxinventory.h @@ -95,7 +95,7 @@ public:  	LLInboxFolderViewItem(const Params& p); -	BOOL addToFolder(LLFolderViewFolder* folder); +	void addToFolder(LLFolderViewFolder* folder);  	BOOL handleDoubleClick(S32 x, S32 y, MASK mask);  	void draw(); diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 4f2c515bde..82956beb3d 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -1567,11 +1567,8 @@ void LLPanelObjectInventory::reset()  	mFolders = LLUICtrlFactory::create<LLFolderView>(p);  	// this ensures that we never say "searching..." or "no items found"  	//TODO RN: make this happen by manipulating filter object directly -  	LLInventoryFilter* inventoryFilter = dynamic_cast<LLInventoryFilter*>(mFolders->getFolderViewModel()->getFilter()); -  	if(inventoryFilter) -	{ -    	inventoryFilter->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS); -  	} +  	LLInventoryFilter& inventoryFilter = dynamic_cast<LLInventoryFilter&>(mFolders->getFolderViewModel()->getFilter()); +   	inventoryFilter.setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);  	mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 2d3f144588..65f0290060 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -455,7 +455,7 @@ BOOL LLFloaterTexturePicker::postBuild()  		// Commented out to scroll to currently selected texture. See EXT-5403.  		// // store this filter as the default one -		// mInventoryPanel->getRootFolder()->getFilter()->markDefault(); +		// mInventoryPanel->getRootFolder()->getFilter().markDefault();  		// Commented out to stop opening all folders with textures  		// mInventoryPanel->openDefaultFolderForType(LLFolderType::FT_TEXTURE); @@ -638,10 +638,10 @@ void LLFloaterTexturePicker::draw()  		LLFolderView* folder_view = mInventoryPanel->getRootFolder();  		if (!folder_view) return; -		LLFolderViewFilter* filter = static_cast<LLFolderViewModelInventory*>(folder_view->getFolderViewModel())->getFilter(); +		LLFolderViewFilter& filter = static_cast<LLFolderViewModelInventory*>(folder_view->getFolderViewModel())->getFilter(); -		bool is_filter_active = folder_view->getViewModelItem()->getLastFilterGeneration() < filter->getCurrentGeneration() && -				filter->isNotDefault(); +		bool is_filter_active = folder_view->getViewModelItem()->getLastFilterGeneration() < filter.getCurrentGeneration() && +				filter.isNotDefault();  		// After inventory panel filter is applied we have to update  		// constraint rect for the selected item because of folder view @@ -1012,7 +1012,7 @@ void LLFloaterTexturePicker::onFilterEdit(const std::string& search_string )  	else if (mInventoryPanel->getFilterSubString().empty())  	{  		// first letter in search term, save existing folder open state -		if (!mInventoryPanel->getFilter()->isNotDefault()) +		if (!mInventoryPanel->getFilter().isNotDefault())  		{  			mSavedFolderState.setApply(FALSE);  			mInventoryPanel->getRootFolder()->applyFunctorRecursively(mSavedFolderState); | 
