summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMnikolenko Productengine <mnikolenko@productengine.com>2017-12-20 17:01:47 +0200
committerMnikolenko Productengine <mnikolenko@productengine.com>2017-12-20 17:01:47 +0200
commitde8ff2c7b397f22d1e15b21e7553a8c3e3933d45 (patch)
tree72575e4e3bb4f3dca0626baaa7a4c2d5c2b1693b
parentcdc23f48159410ee859eac7415c91cadeef849ef (diff)
MAINT-8061 update folder label when item count changes
-rw-r--r--indra/newview/llinventorypanel.cpp29
-rw-r--r--indra/newview/llinventorypanel.h2
2 files changed, 31 insertions, 0 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 2762c7af82..93269db380 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -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();
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 3829fb734d..12001f5a2b 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -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);