diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index d40347de13b2d800bb6e96f1a5aeafb386d86f6c..6710e9993dcadd8c7bf6f38e6c730e2c8c6b879d 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1799,6 +1799,12 @@ bool LLNotifications::getIgnoreAllNotifications()
 	return mIgnoreAllNotifications; 
 }
 
+void LLNotifications::setIgnored(const std::string& name, bool ignored)
+{
+	LLNotificationTemplatePtr templatep = getTemplate(name);
+	templatep->mForm->setIgnored(ignored);
+}
+
 bool LLNotifications::getIgnored(const std::string& name)
 {
 	LLNotificationTemplatePtr templatep = getTemplate(name);
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index a7a54904327bcb16663263e41ad5d4dee06a4f16..b06d7cbf4cda340a510d300b41e077c68dbe0e60 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -964,6 +964,7 @@ class LLNotifications :
 	void setIgnoreAllNotifications(bool ignore);
 	bool getIgnoreAllNotifications();
 
+	void setIgnored(const std::string& name, bool ignored);
 	bool getIgnored(const std::string& name);
 
 	bool isVisibleByRules(LLNotificationPtr pNotification);
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 90d6e9b8a8866d98a70a65963ce86fbe59819d92..d282240bfbbb5356a5865e5daa566cf7064adcf7 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -92,8 +92,6 @@ 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)
 {
@@ -2298,29 +2296,6 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
 	if ("delete" == action)
 	{
 		static bool sDisplayedAtSession = false;
-
-		bool has_folder_items = false;
-		for (std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter)
-		{
-			LLFolderViewModelItemInventory * 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;
-				}
-			}
-		}
 		
 		LLAllDescendentsPassedFilter f;
 		for (std::set<LLFolderViewItem*>::iterator it = selected_items.begin(); (it != selected_items.end()) && (f.allDescendentsPassedFilter()); ++it)
@@ -2330,7 +2305,6 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
 				folder->applyFunctorRecursively(f);
 			}
 		}
-
 		// Fall through to the generic confirmation if the user choose to ignore the specialized one
 		if ( (!f.allDescendentsPassedFilter()) && (!LLNotifications::instance().getIgnored("DeleteFilteredItems")) )
 		{
@@ -2338,6 +2312,12 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
 		}
 		else
 		{
+			if (!sDisplayedAtSession) // ask for the confirmation at least once per session
+			{
+				LLNotifications::instance().setIgnored("DeleteItems", false);
+				sDisplayedAtSession = true;
+			}
+
 			LLSD args;
 			args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" :  "DeleteItem");
 			LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle()));