summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandreykproductengine <andreykproductengine@lindenlab.com>2017-05-08 18:05:10 +0300
committerandreykproductengine <andreykproductengine@lindenlab.com>2017-05-08 18:05:10 +0300
commitfb7be87bebd785a7a3e7a7b59103bc952d98dc83 (patch)
treecbb394f41cfdee600df60f03441b6f7361a92a43
parentd4d56f004a528ea0cada526132dd77bd410a8fe7 (diff)
MAINT-7354 correction to misbehaving 'purge' and notification spam.
-rw-r--r--indra/newview/llfloaterpreviewtrash.cpp8
-rw-r--r--indra/newview/llfloaterpreviewtrash.h1
-rw-r--r--indra/newview/llinventorymodel.cpp12
-rw-r--r--indra/newview/llinventorypanel.cpp16
-rw-r--r--indra/newview/llinventorypanel.h1
5 files changed, 35 insertions, 3 deletions
diff --git a/indra/newview/llfloaterpreviewtrash.cpp b/indra/newview/llfloaterpreviewtrash.cpp
index 084e914c9e..717d0ddcad 100644
--- a/indra/newview/llfloaterpreviewtrash.cpp
+++ b/indra/newview/llfloaterpreviewtrash.cpp
@@ -60,7 +60,13 @@ LLFloaterPreviewTrash::~LLFloaterPreviewTrash()
// static
void LLFloaterPreviewTrash::show()
{
- LLFloaterReg::showTypedInstance<LLFloaterPreviewTrash>("preview_trash");
+ LLFloaterReg::showTypedInstance<LLFloaterPreviewTrash>("preview_trash", LLSD(), TRUE);
+}
+
+// static
+bool LLFloaterPreviewTrash::isVisible()
+{
+ return LLFloaterReg::instanceVisible("preview_trash");
}
diff --git a/indra/newview/llfloaterpreviewtrash.h b/indra/newview/llfloaterpreviewtrash.h
index 6fc0fe6928..465c0c677f 100644
--- a/indra/newview/llfloaterpreviewtrash.h
+++ b/indra/newview/llfloaterpreviewtrash.h
@@ -35,6 +35,7 @@ class LLFloaterPreviewTrash
{
public:
static void show();
+ static bool isVisible();
LLFloaterPreviewTrash(const LLSD& key);
~LLFloaterPreviewTrash();
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 0fe03583f5..e5fd126d53 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -3437,8 +3437,16 @@ void LLInventoryModel::checkTrashOverflow()
const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH);
if (getDescendentsCountRecursive(trash_id, trash_max_capacity) >= trash_max_capacity)
{
- LLNotificationsUtil::add("TrashIsFull", LLSD(), LLSD(),
- boost::bind(callback_preview_trash_folder, _1, _2));
+ if (LLFloaterPreviewTrash::isVisible())
+ {
+ // bring to front
+ LLFloaterPreviewTrash::show();
+ }
+ else
+ {
+ LLNotificationsUtil::add("TrashIsFull", LLSD(), LLSD(),
+ boost::bind(callback_preview_trash_folder, _1, _2));
+ }
}
}
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 9de0633edb..a00dcf02ab 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -168,6 +168,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this));
mCommitCallbackRegistrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, this));
mCommitCallbackRegistrar.add("Inventory.FileUploadLocation", boost::bind(&LLInventoryPanel::fileUploadLocation, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.Purge", boost::bind(&LLInventoryPanel::purgeSelectedItems, this));
}
LLFolderView * LLInventoryPanel::createFolderRoot(LLUUID root_id )
@@ -1211,6 +1212,21 @@ void LLInventoryPanel::fileUploadLocation(const LLSD& userdata)
}
}
+void LLInventoryPanel::purgeSelectedItems()
+{
+ 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.
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 5cb9dde47a..7f63ea97cc 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -202,6 +202,7 @@ public:
void doCreate(const LLSD& userdata);
bool beginIMSession();
void fileUploadLocation(const LLSD& userdata);
+ void purgeSelectedItems();
bool attachObject(const LLSD& userdata);
static void idle(void* user_data);