summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMaxim Nikolenko <maximnproductengine@lindenlab.com>2023-04-11 21:39:23 +0300
committerMaxim Nikolenko <maximnproductengine@lindenlab.com>2023-04-11 21:39:23 +0300
commit6e5b94071b62113f2bd52dd6985498990926a9f6 (patch)
tree3dc627b63e1761aba070d377766d10e03c5059c4 /indra
parentaf30c8c95b81e99c76bd5e08dcaab4c31dfdcac1 (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.cpp6
-rw-r--r--indra/newview/llpanelmaininventory.cpp42
-rw-r--r--indra/newview/llpanelmaininventory.h1
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();