From 0478d9057838ecdbfa08bfe2ca0940b164e146ac Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Sun, 3 Feb 2019 17:38:43 -0500 Subject: [PATCH] Right click linked names/groups/objects in chat, copy key --- indra/llui/lltexteditor.cpp | 24 +++++++++++++++---- .../default/xui/en-us/menu_url_agent.xml | 3 +++ .../default/xui/en-us/menu_url_agent_mini.xml | 3 +++ .../default/xui/en-us/menu_url_experience.xml | 3 +++ .../default/xui/en-us/menu_url_group.xml | 3 +++ .../default/xui/en-us/menu_url_objectim.xml | 3 +++ 6 files changed, 35 insertions(+), 4 deletions(-) diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index b40c7c168..5aae494be 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -406,12 +406,13 @@ class ContextText : public LLMemberListener } }; +static const std::string& get_focused_url() +{ + return get_focused_text_editor()->getMenuSegmentUrl(); +} + class ContextUrl : public LLMemberListener { - static const std::string& get_focused_url() - { - return get_focused_text_editor()->getMenuSegmentUrl(); - } bool handleEvent(LLPointer, const LLSD& userdata) override { const auto& url = get_focused_url(); @@ -434,6 +435,20 @@ class ContextUrl : public LLMemberListener } }; +class ContextUrlCopy : public LLMemberListener +{ + + bool handleEvent(LLPointer, const LLSD& userdata) override + { + const auto& url = get_focused_url(); + const auto& type = userdata.asStringRef(); + // Empty works like avatar and group, "object" is an object (you needed to be told this) + const auto& id = type.empty() ? LLUrlAction::getUserID(url) : LLUrlAction::getObjectId(url); + LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(id)); + return true; + } +}; + void LLTextEditor::spell_correct(void* data) { @@ -516,6 +531,7 @@ void LLTextEditor::addMenuListeners() { (new ContextText)->registerListener(LLMenuGL::sMenuContainer, "Text"); (new ContextUrl)->registerListener(LLMenuGL::sMenuContainer, "Text.Url"); + (new ContextUrlCopy)->registerListener(LLMenuGL::sMenuContainer, "Text.Url.CopyUUID"); } void LLTextEditor::setTrackColor( const LLColor4& color ) diff --git a/indra/newview/skins/default/xui/en-us/menu_url_agent.xml b/indra/newview/skins/default/xui/en-us/menu_url_agent.xml index f369c0ba7..f9403282e 100644 --- a/indra/newview/skins/default/xui/en-us/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/en-us/menu_url_agent.xml @@ -47,6 +47,9 @@ + + + diff --git a/indra/newview/skins/default/xui/en-us/menu_url_agent_mini.xml b/indra/newview/skins/default/xui/en-us/menu_url_agent_mini.xml index 8475a6000..ba3c272d7 100644 --- a/indra/newview/skins/default/xui/en-us/menu_url_agent_mini.xml +++ b/indra/newview/skins/default/xui/en-us/menu_url_agent_mini.xml @@ -26,6 +26,9 @@ + + + diff --git a/indra/newview/skins/default/xui/en-us/menu_url_experience.xml b/indra/newview/skins/default/xui/en-us/menu_url_experience.xml index 73261b3a0..24a9f4095 100644 --- a/indra/newview/skins/default/xui/en-us/menu_url_experience.xml +++ b/indra/newview/skins/default/xui/en-us/menu_url_experience.xml @@ -10,6 +10,9 @@ + + + diff --git a/indra/newview/skins/default/xui/en-us/menu_url_group.xml b/indra/newview/skins/default/xui/en-us/menu_url_group.xml index d631beed2..99b8c6d67 100644 --- a/indra/newview/skins/default/xui/en-us/menu_url_group.xml +++ b/indra/newview/skins/default/xui/en-us/menu_url_group.xml @@ -26,6 +26,9 @@ + + + diff --git a/indra/newview/skins/default/xui/en-us/menu_url_objectim.xml b/indra/newview/skins/default/xui/en-us/menu_url_objectim.xml index 50551b14a..befbada9a 100644 --- a/indra/newview/skins/default/xui/en-us/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/en-us/menu_url_objectim.xml @@ -56,6 +56,9 @@ + + +