diff options
| -rw-r--r-- | indra/newview/llfloaterpreviewtrash.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llfloaterpreviewtrash.h | 1 | ||||
| -rw-r--r-- | indra/newview/llinventorymodel.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.h | 1 | 
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);  | 
