summaryrefslogtreecommitdiff
path: root/indra/newview/llfolderviewmodelinventory.cpp
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2015-07-14 16:01:15 -0400
committerOz Linden <oz@lindenlab.com>2015-07-14 16:01:15 -0400
commit67edc1edf5389ca74a114018a804c71deecdebc1 (patch)
tree47513ac026187a19d595f36c46429b58aca90289 /indra/newview/llfolderviewmodelinventory.cpp
parent4aa64b99dbe6cafdccf0c25501feaef5ba3445c4 (diff)
parent02757fc98ef1c56edce9de861a61828a9776f5f1 (diff)
merge 3.8.0-release and correct xml errors caused by reformatting
Diffstat (limited to 'indra/newview/llfolderviewmodelinventory.cpp')
-rwxr-xr-xindra/newview/llfolderviewmodelinventory.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
index 3271a40ea0..44eda4d6c0 100755
--- a/indra/newview/llfolderviewmodelinventory.cpp
+++ b/indra/newview/llfolderviewmodelinventory.cpp
@@ -27,6 +27,7 @@
#include "llviewerprecompiledheaders.h"
#include "llfolderviewmodelinventory.h"
#include "llinventorymodelbackgroundfetch.h"
+#include "llinventoryfunctions.h"
#include "llinventorypanel.h"
#include "lltooldraganddrop.h"
#include "llfavoritesbar.h"
@@ -277,7 +278,7 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a,
// We sort by name if we aren't sorting by date
// OR if these are folders and we are sorting folders by name.
- bool by_name = (!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM)));
+ bool by_name = ((!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM))) && !mFoldersByWeight);
if (a->getSortGroup() != b->getSortGroup())
{
@@ -309,6 +310,31 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a,
return (compare < 0);
}
}
+ else if (mFoldersByWeight)
+ {
+ S32 weight_a = compute_stock_count(a->getUUID());
+ S32 weight_b = compute_stock_count(b->getUUID());
+ if (weight_a == weight_b)
+ {
+ // Equal weight -> use alphabetical order
+ return (LLStringUtil::compareDict(a->getDisplayName(), b->getDisplayName()) < 0);
+ }
+ else if (weight_a == COMPUTE_STOCK_INFINITE)
+ {
+ // No stock -> move a at the end of the list
+ return false;
+ }
+ else if (weight_b == COMPUTE_STOCK_INFINITE)
+ {
+ // No stock -> move b at the end of the list
+ return true;
+ }
+ else
+ {
+ // Lighter is first (sorted in increasing order of weight)
+ return (weight_a < weight_b);
+ }
+ }
else
{
time_t first_create = a->getCreationDate();