diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.h | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_inventory.xml | 8 | 
3 files changed, 38 insertions, 1 deletions
| diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index b819100b9b..fce0b7c9c9 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -71,6 +71,9 @@  #include "llviewerwindow.h"  #include "llvoavatarself.h"  #include "llwearablelist.h" +#include "lllandmarkactions.h" + +void copy_slurl_to_clipboard_callback_inv(const std::string& slurl);  // Marketplace outbox current disabled  #define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU	1 @@ -1399,6 +1402,29 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)  		const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);  		copy_item_to_outbox(itemp, outbox_id, LLUUID::null, LLToolDragAndDrop::getOperationId());  	} +	else if ("copy_slurl" == action) +	{ +		LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem()); +		if(item) +		{ +			LLUUID asset_id = item->getAssetUUID(); +			LLLandmark* landmark = gLandmarkList.getAsset(asset_id); +			if (landmark) +			{ +				LLVector3d global_pos; +				landmark->getGlobalPos(global_pos); +				LLLandmarkActions::getSLURLfromPosGlobal(global_pos, ©_slurl_to_clipboard_callback_inv, true); +			} +		} +	} +} + +void copy_slurl_to_clipboard_callback_inv(const std::string& slurl) +{ +	gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(slurl)); +	LLSD args; +	args["SLURL"] = slurl; +	LLNotificationsUtil::add("CopySLURL", args);  }  void LLItemBridge::selectItem() @@ -4403,6 +4429,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		}  		items.push_back(std::string("Landmark Separator")); +		items.push_back(std::string("url_copy"));  		items.push_back(std::string("About Landmark"));  	} @@ -4411,6 +4438,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  	// info panel can be shown at a time.  	if ((flags & FIRST_SELECTED_ITEM) == 0)  	{ +		disabled_items.push_back(std::string("url_copy"));  		disabled_items.push_back(std::string("About Landmark"));  	} diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index dc9e88d54d..118430efe1 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -197,6 +197,8 @@ public:  				 const LLUUID& uuid) :  		LLInvFVBridge(inventory, root, uuid) {} +	typedef boost::function<void(std::string& slurl)> slurl_callback_t; +  	virtual void performAction(LLInventoryModel* model, std::string action);  	virtual void selectItem();  	virtual void restoreItem(); @@ -214,7 +216,6 @@ public:  	virtual BOOL isItemCopyable() const;  	virtual BOOL hasChildren() const { return FALSE; }  	virtual BOOL isUpToDate() const { return TRUE; } -  	/*virtual*/ void clearDisplayName() { mDisplayName.clear(); }  	LLViewerInventoryItem* getItem() const; diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index b13bf5b508..13dc0b941a 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -537,6 +537,14 @@       layout="topleft"       name="Landmark Separator" />      <menu_item_call +    label="Copy SLurl" +    layout="topleft" +    name="url_copy"> +       <menu_item_call.on_click +        function="Inventory.DoToSelected" +        parameter="copy_slurl" /> +   </menu_item_call>  +   <menu_item_call       label="About Landmark"       layout="topleft"       name="About Landmark"> | 
