summaryrefslogtreecommitdiff
path: root/indra/newview/llinventorypanel.cpp
diff options
context:
space:
mode:
authorGlenn Glazer <coyot@lindenlab.com>2017-05-23 07:59:15 -0700
committerGlenn Glazer <coyot@lindenlab.com>2017-05-23 07:59:15 -0700
commit3fda9bea31327f166dd1067f7e5c9ce251b40289 (patch)
treed7bbf85ac5d6b15ed7d5db8b8b67a1cccbaca4f9 /indra/newview/llinventorypanel.cpp
parent4bf1f1d618d61f0cc2ec0dd22cea7d1c5b909b8f (diff)
parentcf5865c6e2b27918b526431ccc4309bfc702534e (diff)
pull from gate
Diffstat (limited to 'indra/newview/llinventorypanel.cpp')
-rw-r--r--indra/newview/llinventorypanel.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index bd15ba4975..4b117941a0 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -43,6 +43,7 @@
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
+#include "llnotificationsutil.h"
#include "llpreview.h"
#include "llsidepanelinventory.h"
#include "lltrans.h"
@@ -1211,6 +1212,33 @@ void LLInventoryPanel::fileUploadLocation(const LLSD& userdata)
}
}
+void LLInventoryPanel::purgeSelectedItems()
+{
+ const std::set<LLFolderViewItem*> inventory_selected = mFolderRoot.get()->getSelectionList();
+ if (inventory_selected.empty()) return;
+ LLSD args;
+ args["COUNT"] = (S32)inventory_selected.size();
+ LLNotificationsUtil::add("PurgeSelectedItems", args, LLSD(), boost::bind(&LLInventoryPanel::callbackPurgeSelectedItems, this, _1, _2));
+}
+
+void LLInventoryPanel::callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (option == 0)
+ {
+ const std::set<LLFolderViewItem*> inventory_selected = mFolderRoot.get()->getSelectionList();
+ if (inventory_selected.empty()) return;
+
+ std::set<LLFolderViewItem*>::const_iterator it = inventory_selected.begin();
+ const std::set<LLFolderViewItem*>::const_iterator it_end = inventory_selected.end();
+ for (; it != it_end; ++it)
+ {
+ LLUUID item_id = static_cast<LLFolderViewModelItemInventory*>((*it)->getViewModelItem())->getUUID();
+ remove_inventory_object(item_id, NULL);
+ }
+ }
+}
+
bool LLInventoryPanel::attachObject(const LLSD& userdata)
{
// Copy selected item UUIDs to a vector.
@@ -1448,6 +1476,11 @@ void LLInventoryPanel::updateSelection()
void LLInventoryPanel::doToSelected(const LLSD& userdata)
{
+ if (("purge" == userdata.asString()))
+ {
+ purgeSelectedItems();
+ return;
+ }
LLInventoryAction::doToSelected(mInventory, mFolderRoot.get(), userdata.asString());
return;
@@ -1482,7 +1515,9 @@ BOOL LLInventoryPanel::handleKeyHere( KEY key, MASK mask )
}
break;
case KEY_DELETE:
+#if LL_DARWIN
case KEY_BACKSPACE:
+#endif
// Delete selected items if delete or backspace key hit on the inventory panel
// Note: on Mac laptop keyboards, backspace and delete are one and the same
if (isSelectionRemovable() && (mask == MASK_NONE))