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.

meow-7.2.2
Brad Payne (Vir Linden) 2010-01-07 14:16:06 -05:00
parent 3e6d795d7b
commit 16773e0021
2 changed files with 13 additions and 10 deletions

View File

@ -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;
}
}
}
}

View File

@ -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;