MAINT-8061 update folder label when item count changes

meow-7.2.2
Mnikolenko Productengine 2017-12-20 17:01:47 +02:00
parent cdc23f4815
commit de8ff2c7b3
2 changed files with 31 additions and 0 deletions

View File

@ -563,6 +563,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
{
setSelection(item_id, FALSE);
}
updateFolderLabel(model_item->getParentUUID());
}
//////////////////////////////
@ -574,6 +575,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
// Don't process the item if it is the root
if (old_parent)
{
LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(old_parent->getViewModelItem());
LLFolderViewFolder* new_parent = (LLFolderViewFolder*)getItemByID(model_item->getParentUUID());
// Item has been moved.
if (old_parent != new_parent)
@ -591,6 +593,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
setSelection(item_id, FALSE);
}
}
updateFolderLabel(model_item->getParentUUID());
}
else
{
@ -602,6 +605,10 @@ void LLInventoryPanel::modelChanged(U32 mask)
// doesn't include trash). Just remove the item's UI.
view_item->destroyView();
}
if(viewmodel_folder)
{
updateFolderLabel(viewmodel_folder->getUUID());
}
old_parent->getViewModelItem()->dirtyDescendantsFilter();
}
}
@ -619,6 +626,11 @@ void LLInventoryPanel::modelChanged(U32 mask)
if(parent)
{
parent->getViewModelItem()->dirtyDescendantsFilter();
LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(parent->getViewModelItem());
if(viewmodel_folder)
{
updateFolderLabel(viewmodel_folder->getUUID());
}
}
}
}
@ -1162,6 +1174,23 @@ void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& it
}
void LLInventoryPanel::updateFolderLabel(const LLUUID& folder_id)
{
if(folder_id != mPreviousSelectedFolder) return;
LLFolderViewItem* folder_item = getItemByID(mPreviousSelectedFolder);
if(folder_item)
{
LLFolderBridge* bridge = (LLFolderBridge*)folder_item->getViewModelItem();
if(bridge)
{
bridge->clearDisplayName();
bridge->setShowDescendantsCount(true);
folder_item->refresh();
}
}
}
void LLInventoryPanel::doCreate(const LLSD& userdata)
{
reset_inventory_filter();

View File

@ -209,6 +209,8 @@ public:
bool attachObject(const LLSD& userdata);
static void idle(void* user_data);
void updateFolderLabel(const LLUUID& folder_id);
// DEBUG ONLY:
static void dumpSelectionInformation(void* user_data);