diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 178 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.h | 22 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_inventory.xml | 16 | 
3 files changed, 85 insertions, 131 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 3a630650c5..cdc3650366 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -461,8 +461,8 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const  }  void hide_context_entries(LLMenuGL& menu,  -						const std::vector<std::string> &entries_to_show, -						const std::vector<std::string> &disabled_entries) +						const menuentry_vec_t &entries_to_show, +						const menuentry_vec_t &disabled_entries)  {  	const LLView::child_list_t *list = menu.getChildList(); @@ -480,7 +480,7 @@ void hide_context_entries(LLMenuGL& menu,  		bool found = false; -		std::vector<std::string>::const_iterator itor2; +		menuentry_vec_t::const_iterator itor2;  		for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)  		{  			if (*itor2 == name) @@ -508,8 +508,8 @@ void hide_context_entries(LLMenuGL& menu,  // Helper for commonly-used entries  void LLInvFVBridge::getClipboardEntries(bool show_asset_id, -										std::vector<std::string> &items, -										std::vector<std::string> &disabled_items, U32 flags) +										menuentry_vec_t &items, +										menuentry_vec_t &disabled_items, U32 flags)  {  	const LLInventoryObject *obj = getInventoryObject(); @@ -603,16 +603,11 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,  void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	lldebugs << "LLInvFVBridge::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -624,6 +619,27 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  	hide_context_entries(menu, items, disabled_items);  } +void LLInvFVBridge::addTrashContextMenuOptions(menuentry_vec_t &items, +											   menuentry_vec_t &disabled_items) +{ +	const LLInventoryObject *obj = getInventoryObject(); +	if (obj && obj->getIsLinkType()) +	{ +		items.push_back(std::string("Find Original")); +		if (isLinkedObjectMissing()) +		{ +			disabled_items.push_back(std::string("Find Original")); +		} +	} +	items.push_back(std::string("Purge Item")); +	if (!isItemRemovable()) +	{ +		disabled_items.push_back(std::string("Purge Item")); +	} +	items.push_back(std::string("Restore Item")); +} + +  // *TODO: remove this  BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const  { @@ -2439,7 +2455,7 @@ void LLFolderBridge::staticFolderOptionsMenu()  void LLFolderBridge::folderOptionsMenu()  { -	std::vector<std::string> disabled_items; +	menuentry_vec_t disabled_items;  	LLInventoryModel* model = getInventoryModel();  	if(!model) return; @@ -2572,7 +2588,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  	lldebugs << "LLFolderBridge::buildContextMenu()" << llendl; -//	std::vector<std::string> disabled_items; +//	menuentry_vec_t disabled_items;  	LLInventoryModel* model = getInventoryModel();  	if(!model) return;  	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); @@ -2589,17 +2605,11 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		// This is the trash.  		mItems.push_back(std::string("Empty Trash"));  	} -	else if(model->isObjectDescendentOf(mUUID, trash_id)) +	else if(isItemInTrash())  	{  		// This is a folder in the trash.  		mItems.clear(); // clear any items that used to exist -		mItems.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			mDisabledItems.push_back(std::string("Purge Item")); -		} - -		mItems.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(mItems, mDisabledItems);  	}  	else if(isAgentInventory()) // do not allow creating in library  	{ @@ -3206,17 +3216,11 @@ bool LLTextureBridge::canSaveTexture(void)  void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	lldebugs << "LLTextureBridge::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -3299,18 +3303,12 @@ void LLSoundBridge::openSoundPreview(void* which)  void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	lldebugs << "LLSoundBridge::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -3347,19 +3345,13 @@ LLUIImagePtr LLLandmarkBridge::getIcon() const  void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  { -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -3573,18 +3565,12 @@ void LLCallingCardBridge::openItem()  void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	lldebugs << "LLCallingCardBridge::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -3839,17 +3825,11 @@ BOOL LLGestureBridge::removeItem()  void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	lldebugs << "LLGestureBridge::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -3901,19 +3881,13 @@ LLUIImagePtr LLAnimationBridge::getIcon() const  void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  { -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -4182,17 +4156,11 @@ static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("Rep  void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  { -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -4598,17 +4566,11 @@ void LLWearableBridge::openItem()  void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	lldebugs << "LLWearableBridge::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{	// FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere @@ -5302,21 +5264,15 @@ void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	// *TODO: Translate  	lldebugs << "LLLink::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items;  	items.push_back(std::string("Find Original"));  	disabled_items.push_back(std::string("Find Original"));  	if(isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ @@ -5356,18 +5312,12 @@ void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	// *TODO: Translate  	lldebugs << "LLLink::buildContextMenu()" << llendl; -	std::vector<std::string> items; -	std::vector<std::string> disabled_items; +	menuentry_vec_t items; +	menuentry_vec_t disabled_items; -	if(isItemInTrash()) +	if (isItemInTrash())  	{ -		items.push_back(std::string("Purge Item")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Purge Item")); -		} - -		items.push_back(std::string("Restore Item")); +		addTrashContextMenuOptions(items, disabled_items);  	}  	else  	{ diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 6e256edc05..daa6dbeeba 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -107,13 +107,15 @@ struct LLAttachmentRezAction  	S32		mAttachPt;  }; +typedef std::vector<std::string> menuentry_vec_t; +  const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type);  void hide_context_entries(LLMenuGL& menu,  -						const std::vector<std::string> &entries_to_show, -						const std::vector<std::string> &disabled_entries); +						  const menuentry_vec_t &entries_to_show, +						  const menuentry_vec_t &disabled_entries);  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Class LLInvFVBridge (& it's derived classes) +// Class LLInvFVBridge (& its derived classes)  //  // Short for Inventory-Folder-View-Bridge. This is an  // implementation class to be able to view inventory items. @@ -172,9 +174,11 @@ public:  	virtual BOOL isClipboardPasteableAsLink() const;  	virtual void pasteFromClipboard() {}  	virtual void pasteLinkFromClipboard() {} -	void getClipboardEntries(bool show_asset_id, std::vector<std::string> &items,  -		std::vector<std::string> &disabled_items, U32 flags); +	void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items,  +		menuentry_vec_t &disabled_items, U32 flags);  	virtual void buildContextMenu(LLMenuGL& menu, U32 flags); +	virtual void addTrashContextMenuOptions(menuentry_vec_t &items, +											menuentry_vec_t &disabled_items);  	virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;  	virtual BOOL dragOrDrop(MASK mask, BOOL drop,  							EDragAndDropType cargo_type, @@ -361,8 +365,8 @@ private:  	BOOL			mCallingCards;  	BOOL			mWearables;  	LLMenuGL*		mMenu; -	std::vector<std::string> mItems; -	std::vector<std::string> mDisabledItems; +	menuentry_vec_t mItems; +	menuentry_vec_t mDisabledItems;  };  // DEPRECATED @@ -816,7 +820,7 @@ void teleport_via_landmark(const LLUUID& asset_id);  // Utility function to hide all entries except those in the list  void hide_context_entries(LLMenuGL& menu,  -		const std::vector<std::string> &entries_to_show,  -		const std::vector<std::string> &disabled_entries); +		const menuentry_vec_t &entries_to_show,  +		const menuentry_vec_t &disabled_entries);  #endif // LL_LLINVENTORYBRIDGE_H diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 1993af6730..2874151df5 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -370,6 +370,14 @@       layout="topleft"       name="Outfit Separator" />      <menu_item_call +     label="Find Original" +     layout="topleft" +     name="Find Original"> +        <menu_item_call.on_click +         function="Inventory.DoToSelected" +         parameter="goto" /> +    </menu_item_call> +    <menu_item_call       label="Purge Item"       layout="topleft"       name="Purge Item"> @@ -386,14 +394,6 @@           parameter="restore" />      </menu_item_call>      <menu_item_call -     label="Find Original" -     layout="topleft" -     name="Find Original"> -        <menu_item_call.on_click -         function="Inventory.DoToSelected" -         parameter="goto" /> -    </menu_item_call> -    <menu_item_call       label="Open"       layout="topleft"       name="Open">  | 
