summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llinventoryfunctions.cpp29
-rw-r--r--indra/newview/llinventoryfunctions.h2
2 files changed, 31 insertions, 0 deletions
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index bccc654fbf..2bb6fb853c 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -92,6 +92,8 @@ BOOL LLInventoryState::sWearNewClothing = FALSE;
LLUUID LLInventoryState::sWearNewClothingTransactionID;
std::list<LLUUID> LLInventoryAction::sMarketplaceFolders;
+const int LLInventoryAction::sConfirmOnDeleteItemsNumber = 5;
+
// Helper function : callback to update a folder after inventory action happened in the background
void update_folder_cb(const LLUUID& dest_folder)
{
@@ -2297,6 +2299,33 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
{
LLSD args;
args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem");
+ static bool sDisplayedAtSession = false;
+ std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin();
+ LLFolderViewModelItemInventory * viewModel = NULL;
+ bool has_folder_items = false;
+ for (; set_iter != selected_items.end(); ++set_iter)
+ {
+ viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem());
+ if (viewModel && viewModel->hasChildren())
+ {
+ has_folder_items = true;
+ break;
+ }
+ }
+ if (root->getSelectedCount() >= sConfirmOnDeleteItemsNumber || has_folder_items)
+ {
+ bool ignore = !(LLUI::sSettingGroups["ignores"]->getBOOL("DeleteItems"));
+ if (ignore)
+ {
+
+ if (!sDisplayedAtSession)
+ {
+ LLUI::sSettingGroups["ignores"]->setBOOL("DeleteItems", TRUE);
+ sDisplayedAtSession = true;
+ }
+
+ }
+ }
LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle()));
// Note: marketplace listings will be updated in the callback if delete confirmed
return;
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 649db4032d..d454d7e00b 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -460,6 +460,8 @@ struct LLInventoryAction
static void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLHandle<LLFolderView> root);
static void removeItemFromDND(LLFolderView* root);
+ static const int sConfirmOnDeleteItemsNumber;
+
private:
static void buildMarketplaceFolders(LLFolderView* root);
static void updateMarketplaceFolders();