From 505ed20da32df3ab96f8b199e30be3c50e88a1e2 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 16 Apr 2024 02:28:25 +0300 Subject: viewer#1216 Library settings can be deleted via My Environments --- indra/newview/llfloatermyenvironment.cpp | 33 +++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'indra/newview/llfloatermyenvironment.cpp') diff --git a/indra/newview/llfloatermyenvironment.cpp b/indra/newview/llfloatermyenvironment.cpp index bc12a5707c..9f42655c83 100644 --- a/indra/newview/llfloatermyenvironment.cpp +++ b/indra/newview/llfloatermyenvironment.cpp @@ -399,6 +399,30 @@ bool LLFloaterMyEnvironment::canApply(const std::string &context) return false; } +bool can_delete(const LLUUID& id) +{ + const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); + if (id == trash_id || gInventory.isObjectDescendentOf(id, trash_id)) + { + return false; + } + + LLViewerInventoryCategory* cat = gInventory.getCategory(id); + if (cat) + { + if (!get_is_category_removable(&gInventory, id)) + { + return false; + } + } + else if (!get_is_item_removable(&gInventory, id)) + { + return false; + } + + return true; +} + //------------------------------------------------------------------------- void LLFloaterMyEnvironment::refreshButtonStates() { @@ -409,7 +433,14 @@ void LLFloaterMyEnvironment::refreshButtonStates() getChild(BUTTON_GEAR)->setEnabled(settings_ok); getChild(BUTTON_NEWSETTINGS)->setEnabled(true); - getChild(BUTTON_DELETE)->setEnabled(settings_ok && !selected.empty()); + + bool enable_delete = false; + if(settings_ok && !selected.empty()) + { + enable_delete = can_delete(selected.front()); + } + + getChild(BUTTON_DELETE)->setEnabled(enable_delete); } //------------------------------------------------------------------------- -- cgit v1.2.3