summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2010-01-07 14:16:06 -0500
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2010-01-07 14:16:06 -0500
commit16773e0021baf3bfa3e2c32b68440320ac5ff9d5 (patch)
tree881efd4210db08479612f73f19f0d4278ead7509 /indra
parent3e6d795d7bbc85a64c67998ec4467ff04a057118 (diff)
For EXT-4018: Wrong expansion behavior in inventory. Made process of finding the My Inventory folder more robust instead of assuming it was always the first child.
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llinventorypanel.cpp21
-rw-r--r--indra/newview/llinventorypanel.h2
2 files changed, 13 insertions, 10 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 164e72e621..b363e917d7 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -433,11 +433,10 @@ void LLInventoryPanel::initializeViews()
{
mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);
}
- llinfos << this << " Generating views for start folder " << mStartFolderString << llendl;
rebuildViewsFor(mStartFolderID);
mViewsInitialized = true;
- defaultOpenInventory();
+ openStartFolderOrMyInventory();
}
void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
@@ -575,7 +574,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
}
// bit of a hack to make sure the inventory is open.
-void LLInventoryPanel::defaultOpenInventory()
+void LLInventoryPanel::openStartFolderOrMyInventory()
{
if (mStartFolderString != "")
{
@@ -583,13 +582,17 @@ void LLInventoryPanel::defaultOpenInventory()
}
else
{
- // Get the first child (it should be "My Inventory") and
- // open it up by name (just to make sure the first child is actually a folder).
- LLView* first_child = mFolders->getFirstChild();
- if (first_child)
+ // Find My Inventory folder and open it up by name
+ for (LLView *child = mFolders->getFirstChild(); child; child = mFolders->findNextSibling(child))
{
- const std::string& first_child_name = first_child->getName();
- mFolders->openFolder(first_child_name);
+ LLFolderViewFolder *fchild = dynamic_cast<LLFolderViewFolder*>(child);
+ if (fchild && fchild->getListener() &&
+ (fchild->getListener()->getUUID() == gInventory.getRootFolderID()))
+ {
+ const std::string& child_name = child->getName();
+ mFolders->openFolder(child_name);
+ break;
+ }
}
}
}
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 4f7f0a79f6..09533b52f1 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -167,7 +167,7 @@ public:
static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE);
protected:
- void defaultOpenInventory(); // open the first level of inventory
+ void openStartFolderOrMyInventory(); // open the first level of inventory
LLInventoryModel* mInventory;
LLInventoryObserver* mInventoryObserver;