diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.h | 2 | 
3 files changed, 25 insertions, 1 deletions
| diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index db347f7096..31b1cb7a23 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -4141,7 +4141,8 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items  			|| is_recent_panel  			|| !trash  			|| trash->getVersion() == LLViewerInventoryCategory::VERSION_UNKNOWN -			|| trash->getDescendentCount() == LLViewerInventoryCategory::VERSION_UNKNOWN) +			|| trash->getDescendentCount() == LLViewerInventoryCategory::VERSION_UNKNOWN +			|| gAgentAvatarp->hasAttachmentsInTrash())  		{  			disabled_items.push_back(std::string("Empty Trash"));  		} diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 8fc1dcd81f..914376f5d1 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -1247,6 +1247,27 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)  	return FALSE;  } +bool LLVOAvatarSelf::hasAttachmentsInTrash() +{ +    const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); + +    for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin(); iter != mAttachmentPoints.end(); ++iter) +    { +        LLViewerJointAttachment *attachment = iter->second; +        for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin(); +             attachment_iter != attachment->mAttachedObjects.end(); +             ++attachment_iter) +        { +            LLViewerObject *attached_object = attachment_iter->get(); +            if (attached_object && gInventory.isObjectDescendentOf(attached_object->getAttachmentItemID(), trash_id)) +            { +                return true; +            } +        } +    } +    return false; +} +  // static  BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id)  { diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 279dbd61a6..6384e2b844 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -289,6 +289,8 @@ public:  	/*virtual*/ BOOL 	detachObject(LLViewerObject *viewer_object);  	static BOOL			detachAttachmentIntoInventory(const LLUUID& item_id); +    bool hasAttachmentsInTrash(); +  	//--------------------------------------------------------------------  	// HUDs  	//-------------------------------------------------------------------- | 
