summaryrefslogtreecommitdiff
path: root/indra/newview/llpaneloutfitedit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpaneloutfitedit.cpp')
-rw-r--r--indra/newview/llpaneloutfitedit.cpp46
1 files changed, 34 insertions, 12 deletions
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 053c2d9498..f8350a56ef 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -196,7 +196,7 @@ private:
LLMenuItemCallGL::Params p;
p.name = type_name;
- p.label = LLWearableType::getTypeDefaultNewName(type);
+ p.label = LLTrans::getString(LLWearableType::getTypeDefaultNewName(type));
p.on_click.function_name = "Wearable.Create";
p.on_click.parameter = LLSD(type_name);
@@ -331,6 +331,8 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetCommitCallback("shop_btn_1", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
childSetCommitCallback("shop_btn_2", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
+ setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this));
+
mCOFWearables = getChild<LLCOFWearables>("cof_wearables_list");
mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::filterWearablesBySelectedItem, this));
@@ -405,10 +407,6 @@ void LLPanelOutfitEdit::onOpen(const LLSD& key)
displayCurrentOutfit();
mInitialized = true;
}
-
- showAddWearablesPanel(false);
- mWearableItemsList->resetSelection();
- mInventoryItemsPanel->clearSelection();
}
void LLPanelOutfitEdit::moveWearable(bool closer_to_body)
@@ -569,13 +567,27 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
void LLPanelOutfitEdit::onPlusBtnClicked(void)
{
- LLUUID selected_id;
- getCurrentItemUUID(selected_id);
+ uuid_vec_t selected_items;
+ getSelectedItemsUUID(selected_items);
- if (selected_id.isNull()) return;
+ LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
+
+ for(uuid_vec_t::iterator iter = selected_items.begin(); iter != selected_items.end(); iter++)
+ {
+ LLUUID selected_id = *iter;
+ if (!selected_id.isNull())
+ {
+ //replacing instead of adding the item
+ LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, false, true, link_waiter);
+ }
+ }
+}
- //replacing instead of adding the item
- LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, true, true);
+void LLPanelOutfitEdit::onVisibilityChange()
+{
+ showAddWearablesPanel(false);
+ mWearableItemsList->resetSelection();
+ mInventoryItemsPanel->clearSelection();
}
void LLPanelOutfitEdit::onAddWearableClicked(void)
@@ -726,12 +738,19 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
bool more_than_one_selected = ids.size() > 1;
bool is_dummy_item = (ids.size() && dynamic_cast<LLPanelDummyClothingListItem*>(mCOFWearables->getSelectedItem()));
- //expanded accordion tab determines filtering when no item is selected
+ //selected and expanded accordion tabs determine filtering when no item is selected
if (nothing_selected)
{
showWearablesListView();
- switch (mCOFWearables->getExpandedAccordionAssetType())
+ //selected accordion tab is more priority than expanded tab when determining filtering
+ LLAssetType::EType type = mCOFWearables->getSelectedAccordionAssetType();
+ if (type == LLAssetType::AT_NONE)
+ {
+ type = mCOFWearables->getExpandedAccordionAssetType();
+ }
+
+ switch (type)
{
case LLAssetType::AT_OBJECT:
applyListViewFilter(LVIT_ATTACHMENT);
@@ -926,6 +945,9 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type
showAddWearablesPanel(true);
showWearablesListView();
+ // Reset mWearableItemsList position to top. See EXT-8180.
+ mWearableItemsList->goToTop();
+
//e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE
applyListViewFilter((EListViewItemType) (LVIT_SHAPE + type));
}