diff options
author | Maxim Nikolenko <maximnproductengine@lindenlab.com> | 2023-04-11 21:39:23 +0300 |
---|---|---|
committer | Maxim Nikolenko <maximnproductengine@lindenlab.com> | 2023-04-11 21:39:23 +0300 |
commit | 6e5b94071b62113f2bd52dd6985498990926a9f6 (patch) | |
tree | 3dc627b63e1761aba070d377766d10e03c5059c4 /indra | |
parent | af30c8c95b81e99c76bd5e08dcaab4c31dfdcac1 (diff) |
SL-19544 WIP combination view filtering; hidden items should be correctly removed when root is changed
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llinventorygallery.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llpanelmaininventory.cpp | 42 | ||||
-rw-r--r-- | indra/newview/llpanelmaininventory.h | 1 |
3 files changed, 43 insertions, 6 deletions
diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index 4e4a476584..f0a1fc5751 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -180,6 +180,11 @@ void LLInventoryGallery::updateRootFolder() { updateRemovedItem(mItems[i]->getUUID()); } + S32 hidden_count = mHiddenItems.size(); + for (S32 i = hidden_count - 1; i >= 0; i--) + { + updateRemovedItem(mHiddenItems[i]->getUUID()); + } if (gInventory.containsObserver(mCategoriesObserver)) { @@ -740,7 +745,6 @@ void LLInventoryGallery::updateRemovedItem(LLUUID item_id) item->die(); } } - } void LLInventoryGallery::updateChangedItemName(LLUUID item_id, std::string name) diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 3ffe1b3901..48b23c3957 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -727,6 +727,10 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string ) mInventoryGalleryPanel->setFilterSubString(mFilterSubString); return; } + if(mSingleFolderMode && isCombinationViewMode()) + { + mCombinationGalleryPanel->setFilterSubString(search_string); + } if (search_string == "") { @@ -816,7 +820,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string ) void LLPanelMainInventory::onFilterSelected() { // Find my index - mActivePanel = mSingleFolderMode ? getChild<LLInventoryPanel>("single_folder_inv") : (LLInventoryPanel*)getChild<LLTabContainer>("inventory filter tabs")->getCurrentPanel(); + setActivePanel(); if (!mActivePanel) { @@ -1243,8 +1247,8 @@ void LLFloaterInventoryFinder::draw() } - bool is_gallery = mPanelMainInventory->isSingleFolderMode() && mPanelMainInventory->isGalleryViewMode(); - if(is_gallery) + bool is_sf_mode = mPanelMainInventory->isSingleFolderMode(); + if(is_sf_mode && mPanelMainInventory->isGalleryViewMode()) { mPanelMainInventory->mInventoryGalleryPanel->getFilter().setShowFolderState(getCheckShowEmpty() ? LLInventoryFilter::SHOW_ALL_FOLDERS : LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); @@ -1252,6 +1256,12 @@ void LLFloaterInventoryFinder::draw() } else { + if(is_sf_mode && mPanelMainInventory->isCombinationViewMode()) + { + mPanelMainInventory->mCombinationGalleryPanel->getFilter().setShowFolderState(getCheckShowEmpty() ? + LLInventoryFilter::SHOW_ALL_FOLDERS : LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); + mPanelMainInventory->mCombinationGalleryPanel->getFilter().setFilterObjectTypes(filter); + } // update the panel, panel will update the filter mPanelMainInventory->getPanel()->setShowFolderState(getCheckShowEmpty() ? LLInventoryFilter::SHOW_ALL_FOLDERS : LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); @@ -1280,7 +1290,7 @@ void LLFloaterInventoryFinder::draw() mPanelMainInventory->setFilterTextFromFilter(); - if(is_gallery) + if(is_sf_mode && mPanelMainInventory->isGalleryViewMode()) { mPanelMainInventory->mInventoryGalleryPanel->getFilter().setHoursAgo(hours); mPanelMainInventory->mInventoryGalleryPanel->getFilter().setDateRangeLastLogoff(getCheckSinceLogoff()); @@ -1288,6 +1298,12 @@ void LLFloaterInventoryFinder::draw() } else { + if(is_sf_mode && mPanelMainInventory->isCombinationViewMode()) + { + mPanelMainInventory->mCombinationGalleryPanel->getFilter().setHoursAgo(hours); + mPanelMainInventory->mCombinationGalleryPanel->getFilter().setDateRangeLastLogoff(getCheckSinceLogoff()); + mPanelMainInventory->mCombinationGalleryPanel->getFilter().setDateSearchDirection(getDateSearchDirection()); + } mPanelMainInventory->getPanel()->setHoursAgo(hours); mPanelMainInventory->getPanel()->setSinceLogoff(getCheckSinceLogoff()); mPanelMainInventory->getPanel()->setDateSearchDirection(getDateSearchDirection()); @@ -1446,6 +1462,22 @@ void LLPanelMainInventory::onAddButtonClick() } } +void LLPanelMainInventory::setActivePanel() +{ + if(mSingleFolderMode && isListViewMode()) + { + mActivePanel = getChild<LLInventoryPanel>("single_folder_inv"); + } + else if(mSingleFolderMode && isCombinationViewMode()) + { + mActivePanel = getChild<LLInventoryPanel>("comb_single_folder_inv"); + } + else + { + mActivePanel = (LLInventoryPanel*)getChild<LLTabContainer>("inventory filter tabs")->getCurrentPanel(); + } +} + void LLPanelMainInventory::toggleViewMode() { mSingleFolderMode = !mSingleFolderMode; @@ -1457,7 +1489,7 @@ void LLPanelMainInventory::toggleViewMode() getChild<LLLayoutPanel>("nav_buttons")->setVisible(mSingleFolderMode); getChild<LLButton>("view_mode_btn")->setImageOverlay(mSingleFolderMode ? getString("default_mode_btn") : getString("single_folder_mode_btn")); - mActivePanel = mSingleFolderMode ? getChild<LLInventoryPanel>("single_folder_inv") : (LLInventoryPanel*)getChild<LLTabContainer>("inventory filter tabs")->getCurrentPanel(); + setActivePanel(); updateTitle(); onFilterSelected(); diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index bc7ed51465..1067892959 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -91,6 +91,7 @@ public: LLInventoryPanel* getAllItemsPanel(); void selectAllItemsPanel(); const LLInventoryPanel* getActivePanel() const { return mActivePanel; } + void setActivePanel(); bool isRecentItemsPanelSelected(); |