diff options
Diffstat (limited to 'indra/newview/llfolderviewmodelinventory.cpp')
| -rw-r--r-- | indra/newview/llfolderviewmodelinventory.cpp | 30 | 
1 files changed, 22 insertions, 8 deletions
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index c668d414d3..a0621bb015 100644 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -68,9 +68,10 @@ void LLFolderViewModelInventory::sort( LLFolderViewFolder* folder )      if (!folder->areChildrenInited() || !needsSort(folder->getViewModelItem())) return; -    LLFolderViewModelItemInventory* modelp =   static_cast<LLFolderViewModelItemInventory*>(folder->getViewModelItem()); -    if (modelp->getUUID().isNull()) return; +    LLFolderViewModelItemInventory* sort_modelp =   static_cast<LLFolderViewModelItemInventory*>(folder->getViewModelItem()); +    if (!sort_modelp->canSortContent()) return; +    bool has_favorites = false;      for (std::list<LLFolderViewFolder*>::iterator it =   folder->getFoldersBegin(), end_it = folder->getFoldersEnd();          it != end_it;          ++it) @@ -79,11 +80,14 @@ void LLFolderViewModelInventory::sort( LLFolderViewFolder* folder )          LLFolderViewFolder* child_folderp = *it;          sort(child_folderp); +        LLFolderViewModelItemInventory* modelp = static_cast<LLFolderViewModelItemInventory*>(child_folderp->getViewModelItem()); +        has_favorites |= child_folderp->isFavorite() || child_folderp->hasFavorites(); +          if (child_folderp->getFoldersCount() > 0)          { -            time_t most_recent_folder_time = -                static_cast<LLFolderViewModelItemInventory*>((*child_folderp->getFoldersBegin())->getViewModelItem())->getCreationDate(); -            LLFolderViewModelItemInventory* modelp =   static_cast<LLFolderViewModelItemInventory*>(child_folderp->getViewModelItem()); +            LLFolderViewModelItemInventory* folderp = static_cast<LLFolderViewModelItemInventory*>((*child_folderp->getFoldersBegin())->getViewModelItem()); +            time_t most_recent_folder_time = folderp->getCreationDate(); +              if (most_recent_folder_time > modelp->getCreationDate())              {                  modelp->setCreationDate(most_recent_folder_time); @@ -91,16 +95,26 @@ void LLFolderViewModelInventory::sort( LLFolderViewFolder* folder )          }          if (child_folderp->getItemsCount() > 0)          { -            time_t most_recent_item_time = -                static_cast<LLFolderViewModelItemInventory*>((*child_folderp->getItemsBegin())->getViewModelItem())->getCreationDate(); +            LLFolderViewModelItemInventory* itemp = static_cast<LLFolderViewModelItemInventory*>((*child_folderp->getItemsBegin())->getViewModelItem()); +            time_t most_recent_item_time = itemp->getCreationDate(); -            LLFolderViewModelItemInventory* modelp =   static_cast<LLFolderViewModelItemInventory*>(child_folderp->getViewModelItem());              if (most_recent_item_time > modelp->getCreationDate())              {                  modelp->setCreationDate(most_recent_item_time);              }          }      } +    for (std::list<LLFolderViewItem*>::const_iterator it = folder->getItemsBegin(), end_it = folder->getItemsEnd(); +        it != end_it && !has_favorites; +        ++it) +    { +        LLFolderViewItem* child_itemp = *it; +        has_favorites |= child_itemp->isFavorite(); +    } +    if (has_favorites) +    { +        folder->updateHasFavorites(true); +    }      base_t::sort(folder);  }  | 
