summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoren Shih <seraph@lindenlab.com>2009-12-09 14:47:52 -0500
committerLoren Shih <seraph@lindenlab.com>2009-12-09 14:47:52 -0500
commit96d5f52624d68768592893ee0b27a0589b0f6222 (patch)
tree39689a2ab2bdb93562ae3cba9c47b11367c13828
parent947260880713f0bd65b03f796f782b167127e294 (diff)
EXT-3274 : Landmarks or Favorites accordion panel shows up as empty
EXT-1609 : Strange behavior for accordions in Places panel, Landmarks tab Forcing top-level folders open when accordion is active. Removed logic that was saving and restoring initial folder state. --HG-- branch : avatar-pipeline
-rw-r--r--indra/newview/llfolderview.cpp10
-rw-r--r--indra/newview/llfolderview.h1
-rw-r--r--indra/newview/llinventorypanel.h1
-rw-r--r--indra/newview/llpanellandmarks.cpp20
4 files changed, 18 insertions, 14 deletions
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 7cf0104075..1c5d7ae9b9 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -357,6 +357,16 @@ void LLFolderView::openFolder(const std::string& foldername)
}
}
+void LLFolderView::openTopLevelFolders()
+{
+ for (folders_t::iterator iter = mFolders.begin();
+ iter != mFolders.end();)
+ {
+ folders_t::iterator fit = iter++;
+ (*fit)->setOpen(TRUE);
+ }
+}
+
void LLFolderView::setOpenArrangeRecursively(BOOL openitem, ERecurseType recurse)
{
// call base class to do proper recursion
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 4adf6c2fbf..d18ba385d8 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -127,6 +127,7 @@ public:
// Close all folders in the view
void closeAllFolders();
void openFolder(const std::string& foldername);
+ void openTopLevelFolders();
virtual void toggleOpen() {};
virtual void setOpenArrangeRecursively(BOOL openitem, ERecurseType recurse);
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index cbbd433c1d..4f7f0a79f6 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -192,6 +192,7 @@ protected:
public:
BOOL getIsViewsInitialized() const { return mViewsInitialized; }
const LLUUID& getStartFolderID() const { return mStartFolderID; }
+ const std::string& getStartFolderString() { return mStartFolderString; }
protected:
// 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 975219458f..c85fab2092 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -389,10 +389,6 @@ void LLLandmarksPanel::initLandmarksPanel(LLInventorySubTreePanel* inventory_lis
}
root_folder->setParentLandmarksPanel(this);
-
- // save initial folder state to avoid incorrect work while switching between Landmarks & Teleport History tabs
- // See EXT-1609.
- inventory_list->saveFolderState();
}
void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLInventorySubTreePanel* inventory_list)
@@ -995,12 +991,13 @@ void LLLandmarksPanel::doCreatePick(LLLandmark* landmark)
//////////////////////////////////////////////////////////////////////////
static void filter_list(LLInventorySubTreePanel* inventory_list, const std::string& string)
{
+ // Open the immediate children of the root folder, since those
+ // are invisible in the UI and thus must always be open.
+ inventory_list->getRootFolder()->openTopLevelFolders();
+
if (string == "")
{
inventory_list->setFilterSubString(LLStringUtil::null);
-
- // re-open folders that were initially open
- inventory_list->restoreFolderState();
}
if (inventory_list->getFilterSubString().empty() && string.empty())
@@ -1009,13 +1006,8 @@ static void filter_list(LLInventorySubTreePanel* inventory_list, const std::stri
return;
}
- // save current folder open state if no filter currently applied
- if (inventory_list->getRootFolder()->getFilterSubString().empty())
- {
- inventory_list->saveFolderState();
- }
-
- // set new filter string
+ // Set new filter string
inventory_list->setFilterSubString(string);
+
}
// EOF