summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llpanelwearing.cpp20
-rw-r--r--indra/newview/llpanelwearing.h3
-rw-r--r--indra/newview/skins/default/xui/en/menu_wearing_gear.xml7
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_wearing.xml11
4 files changed, 19 insertions, 22 deletions
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index e0109675a6..c2f39524c4 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -60,6 +60,7 @@ public:
registrar.add("Gear.Edit", boost::bind(&edit_outfit));
registrar.add("Gear.TakeOff", boost::bind(&LLWearingGearMenu::onTakeOff, this));
+ registrar.add("Gear.Copy", boost::bind(&LLPanelWearing::copyToClipboard, mPanelWearing));
enable_registrar.add("Gear.OnEnable", boost::bind(&LLPanelWearing::isActionEnabled, mPanelWearing, _2));
@@ -184,7 +185,6 @@ BOOL LLPanelWearing::postBuild()
{
mCOFItemsList = getChild<LLWearableItemsList>("cof_items_list");
mCOFItemsList->setRightMouseDownCallback(boost::bind(&LLPanelWearing::onWearableItemsListRightClick, this, _1, _2, _3));
- childSetAction("copy_to_clipboard", boost::bind(&LLPanelWearing::copyToClipboard, this));
LLMenuButton* menu_gear_btn = getChild<LLMenuButton>("options_gear_btn");
@@ -286,24 +286,22 @@ void LLPanelWearing::getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const
void LLPanelWearing::copyToClipboard()
{
std::string text;
- bool need_cr = false;
std::vector<LLSD> data;
mCOFItemsList->getValues(data);
- for(std::vector<LLSD>::iterator iter = data.begin(); iter != data.end(); iter++)
+
+ for(std::vector<LLSD>::const_iterator iter = data.begin(); iter != data.end();)
{
LLSD uuid = (*iter);
LLViewerInventoryItem* item = gInventory.getItem(uuid);
- if (!need_cr)
- {
- text += item->getName();
- need_cr = true;
- }
- else
+
+ iter++;
+ if (item != NULL)
{
- text += "\n" + item->getName();
+ // Append a CR to all but the last line
+ text += iter != data.end() ? item->getName() + "\n" : item->getName();
}
}
+
gClipboard.copyFromString(utf8str_to_wstring(text));
}
-
// EOF
diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h
index 4c9f5ed079..9a212b3cca 100644
--- a/indra/newview/llpanelwearing.h
+++ b/indra/newview/llpanelwearing.h
@@ -60,13 +60,14 @@ public:
/*virtual*/ void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const;
+ /*virtual*/ void copyToClipboard();
+
boost::signals2::connection setSelectionChangeCallback(commit_callback_t cb);
bool hasItemSelected();
private:
void onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y);
- void copyToClipboard();
LLInventoryCategoriesObserver* mCategoriesObserver;
LLWearableItemsList* mCOFItemsList;
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
index 0ac2c14253..0e858ccf10 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -20,4 +20,11 @@
function="Gear.OnEnable"
parameter="take_off" />
</menu_item_call>
+ <menu_item_call
+ label="Copy outfit list to clipboard"
+ layout="topleft"
+ name="copy">
+ <on_click
+ function="Gear.Copy" />
+ </menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
index eef499184c..d85b778db2 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
@@ -42,15 +42,6 @@
tool_tip="Show additional options"
top="1"
width="31" />
- <button
- follows="bottom|left|right"
- height="25"
- layout="topleft"
- left_pad="1"
- name="copy_to_clipboard"
- label="Send to clipboard"
- tool_tip="Send current outfit names to clipboard"
- width="150" />
<icon
follows="bottom|left|right"
height="25"
@@ -58,6 +49,6 @@
layout="topleft"
left_pad="1"
name="dummy_icon"
- width="123" />
+ width="274" />
</panel>
</panel>