From 3c38c7f14869f803538bcb87a109f26fecc9d107 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Thu, 17 Dec 2009 15:21:14 -0500
Subject: [PATCH] EXT-1634 : Block collapse/expand of accordion "root" folder
 by keyword

Hidden folders are no longer allowed to be selected.

--HG--
branch : avatar-pipeline
---
 indra/newview/llfolderview.cpp     | 6 ++++++
 indra/newview/llfolderviewitem.cpp | 4 +++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index adf7f08702e..640b0d7d8f8 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -748,6 +748,12 @@ void LLFolderView::sanitizeSelection()
 				}
 			}
 		}
+
+		// Don't allow invisible items (such as root folders) to be selected.
+		if (item->getDontShowInHierarchy())
+		{
+			items_to_remove.push_back(item);
+		}
 	}
 
 	std::vector<LLFolderViewItem*>::iterator item_it;
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 135821f662d..c2607dcc9a1 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -198,7 +198,9 @@ LLFolderViewItem* LLFolderViewItem::getPreviousOpenNode(BOOL include_children)
 	}
 
 	LLFolderViewItem* itemp = mParentFolder->getPreviousFromChild( this, include_children );
-	while(itemp && !itemp->getVisible())
+
+	// Skip over items that are invisible or are hidden from the UI.
+	while(itemp && (!itemp->getVisible() || itemp->getDontShowInHierarchy()))
 	{
 		LLFolderViewItem* next_itemp = itemp->mParentFolder->getPreviousFromChild( itemp, include_children );
 		if (itemp == next_itemp) 
-- 
GitLab