From f2da2c00a8c290cfb98adf5f53745a0108865ce9 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Mon, 30 Nov 2009 10:54:48 -0500
Subject: [PATCH] EXT-2859 : Landmark filters aren't explicitly fetching
 inventory recursively EXT-2815 : Create ability to selectively apply a filter

LandmarkSP filters are now started explicitly whenever the Library / My Inventory accordion panels are opened.

--HG--
branch : avatar-pipeline
---
 indra/newview/llinventorypanel.h   |  1 +
 indra/newview/llpanellandmarks.cpp | 18 +++++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index fd23b375fab..fd837296301 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -192,6 +192,7 @@ class LLInventoryPanel : public LLPanel
 	//--------------------------------------------------------------------
 public:
 	BOOL 				getIsViewsInitialized() const { return mViewsInitialized; }
+	const LLUUID&		getStartFolderID() const { return mStartFolderID; }
 private:
 	// Builds the UI.  Call this once the inventory is usable.
 	void 				initializeViews();
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index e24fa14e1e9..003241e98eb 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -264,11 +264,14 @@ void LLLandmarksPanel::updateFilteredAccordions()
 		accordion_tab = *iter;
 		inventory_list = dynamic_cast<LLInventorySubTreePanel*> (accordion_tab->getAccordionView());
 		if (NULL == inventory_list) continue;
+		// This doesn't seem to work correctly.  Disabling for now. -Seraph
+		/*
 		LLFolderView* fv = inventory_list->getRootFolder();
-
 		bool has_descendants = fv->hasFilteredDescendants();
 
 		accordion_tab->setVisible(has_descendants);
+		*/
+		accordion_tab->setVisible(TRUE);
 	}
 
 	// we have to arrange accordion tabs for cases when filter string is less restrictive but
@@ -457,6 +460,19 @@ void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLInvento
 		mCurrentSelectedList = NULL;
 		updateVerbs();
 	}
+
+	// Start background fetch, mostly for My Inventory and Library
+	if (expanded)
+	{
+		const LLUUID &cat_id = inventory_list->getStartFolderID();
+		// Just because the category itself has been fetched, doesn't mean its child folders have.
+		/*
+		  if (!gInventory.isCategoryComplete(cat_id))
+		*/
+		{
+			gInventory.startBackgroundFetch(cat_id);
+		}
+	}
 }
 
 void LLLandmarksPanel::deselectOtherThan(const LLInventorySubTreePanel* inventory_list)
-- 
GitLab