summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llcofwearables.cpp16
-rw-r--r--indra/newview/lloutfitslist.cpp17
-rw-r--r--indra/newview/lloutfitslist.h4
-rw-r--r--indra/newview/llscrollingpanelparam.cpp4
-rw-r--r--indra/newview/llsidepanelappearance.cpp9
-rw-r--r--indra/newview/lltexturectrl.cpp5
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_cof_wearables.xml5
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml8
-rw-r--r--indra/newview/skins/default/xui/en/widgets/textbase.xml2
10 files changed, 59 insertions, 21 deletions
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index cbebc93306..472d2ccf24 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -167,10 +167,18 @@ public:
protected:
static void replaceWearable()
{
- static LLButton* show_add_wearables_btn =
- LLSideTray::getInstance()->getChild<LLButton>("show_add_wearables_btn");
-
- show_add_wearables_btn->onCommit();
+ // *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
+ // LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
+ // without casting. Getter methods provides possibility to check and construct
+ // absent instance. Explicit relations between components avoids situations
+ // when we tries to construct instance with unsatisfied implicit input conditions.
+ LLPanelOutfitEdit * panel_outfit_edit =
+ dynamic_cast<LLPanelOutfitEdit*> (LLSideTray::getInstance()->getPanel(
+ "panel_outfit_edit"));
+ if (panel_outfit_edit != NULL)
+ {
+ panel_outfit_edit->showAddWearablesPanel(true);
+ }
}
/*virtual*/ LLContextMenu* createMenu()
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 23c7e64cce..dddfd9106f 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -657,10 +657,10 @@ bool LLOutfitsList::isActionEnabled(const LLSD& userdata)
}
if (command_name == "take_off")
{
- // Enable "Take Off" only if a worn item or base outfit is selected.
- return ( !hasItemSelected()
- && LLAppearanceMgr::getInstance()->getBaseOutfitUUID() == mSelectedOutfitUUID )
- || hasWornItemSelected();
+ // Enable "Take Off" if any of selected items can be taken off
+ // or the selected outfit contains items that can be taken off.
+ return ( hasItemSelected() && canTakeOffSelected() )
+ || ( !hasItemSelected() && LLAppearanceMgr::getCanRemoveFromCOF(mSelectedOutfitUUID) );
}
if (command_name == "wear_add")
@@ -955,14 +955,19 @@ void LLOutfitsList::applyFilterToTab(
}
}
-bool LLOutfitsList::hasWornItemSelected()
+bool LLOutfitsList::canTakeOffSelected()
{
uuid_vec_t selected_uuids;
getSelectedItemsUUIDs(selected_uuids);
+ LLFindWearablesEx is_worn(/*is_worn=*/ true, /*include_body_parts=*/ false);
+
for (uuid_vec_t::const_iterator it=selected_uuids.begin(); it != selected_uuids.end(); ++it)
{
- if (get_is_item_worn(*it)) return true;
+ LLViewerInventoryItem* item = gInventory.getItem(*it);
+ if (!item) continue;
+
+ if (is_worn(NULL, item)) return true;
}
return false;
}
diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h
index 26722f2a96..d7cf8a8c08 100644
--- a/indra/newview/lloutfitslist.h
+++ b/indra/newview/lloutfitslist.h
@@ -179,9 +179,9 @@ private:
void applyFilterToTab(const LLUUID& category_id, LLAccordionCtrlTab* tab, const std::string& filter_substring);
/**
- * Returns true if there are any worn items among currently selected, otherwise false.
+ * Returns true if there are any items that can be taken off among currently selected, otherwise false.
*/
- bool hasWornItemSelected();
+ bool canTakeOffSelected();
void onAccordionTabRightClick(LLUICtrl* ctrl, S32 x, S32 y, const LLUUID& cat_id);
void onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y);
diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp
index 6f5238f0a1..36d581a41a 100644
--- a/indra/newview/llscrollingpanelparam.cpp
+++ b/indra/newview/llscrollingpanelparam.cpp
@@ -209,6 +209,7 @@ void LLScrollingPanelParam::onSliderMoved(LLUICtrl* ctrl, void* userdata)
if (current_weight != new_weight )
{
self->mWearable->setVisualParamWeight( param->getID(), new_weight, FALSE );
+ self->mWearable->writeToAvatar();
gAgentAvatarp->updateVisualParams();
}
}
@@ -298,6 +299,7 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )
&& new_percent < slider->getMaxValue())
{
mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE);
+ mWearable->writeToAvatar();
gAgentAvatarp->updateVisualParams();
slider->setValue( weightToPercent( new_weight ) );
@@ -330,6 +332,7 @@ void LLScrollingPanelParam::onHintMinMouseUp( void* userdata )
&& new_percent < slider->getMaxValue())
{
self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
+ self->mWearable->writeToAvatar();
slider->setValue( self->weightToPercent( new_weight ) );
}
}
@@ -363,6 +366,7 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )
&& new_percent < slider->getMaxValue())
{
self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
+ self->mWearable->writeToAvatar();
slider->setValue( self->weightToPercent( new_weight ) );
}
}
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 951323551c..7a7ffb9983 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -196,6 +196,15 @@ void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
{
gAgentCamera.changeCameraToCustomizeAvatar();
}
+ if (mEditWearable && mEditWearable->getVisible())
+ {
+ LLWearable *wearable_ptr = mEditWearable->getWearable();
+ if (gAgentWearables.getWearableIndex(wearable_ptr) == LLAgentWearables::MAX_CLOTHING_PER_TYPE)
+ {
+ // we're no longer wearing the wearable we were last editing, switch back to outfit editor
+ showOutfitEditPanel();
+ }
+ }
}
}
else
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 0b86cefa1d..fcb9deb20b 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -423,8 +423,9 @@ BOOL LLFloaterTexturePicker::postBuild()
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryPanel->setAllowMultiSelect(FALSE);
- // store this filter as the default one
- mInventoryPanel->getRootFolder()->getFilter()->markDefault();
+ // Commented out to scroll to currently selected texture. See EXT-5403.
+ // // store this filter as the default one
+ // mInventoryPanel->getRootFolder()->getFilter()->markDefault();
// Commented out to stop opening all folders with textures
// mInventoryPanel->openDefaultFolderForType(LLFolderType::FT_TEXTURE);
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 14aacafa9f..68e36ff0b3 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -191,9 +191,10 @@
type="string"
length="1"
follows="left|top"
- height="16"
+ height="20"
layout="topleft"
left_pad="2"
+ valign="center"
name="ContentRatingText"
top_delta="0"
width="250">
@@ -207,7 +208,7 @@
layout="topleft"
left="10"
name="Owner:"
- top_pad="5"
+ top_pad="1"
width="100">
Owner:
</text>
@@ -729,8 +730,10 @@ Leyla Linden </text>
height="16"
layout="topleft"
left_pad="10"
+ top_delta="-3"
mouse_opaque="false"
name="region_maturity_text"
+ valign="center"
width="150">
Adult
</text>
@@ -743,6 +746,7 @@ Leyla Linden </text>
left="10"
mouse_opaque="false"
name="resellable_lbl"
+ top_pad="9"
width="100">
Resale:
</text>
@@ -1924,6 +1928,8 @@ Only large parcels can be listed in search.
left_delta="0"
name="public_access"
top_pad="5"
+ label_text.valign="center"
+ label_text.v_pad="-7"
width="278" />
<text
type="string"
diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
index d2c8ab159f..d5943ea156 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -35,7 +35,10 @@
multi_select="true"
name="list_attachments"
top="0"
- width="311" />
+ width="311">
+ <flat_list_view.no_items_text
+ value="No attachments worn" />
+ </flat_list_view>
</accordion_tab>
<accordion_tab
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index 10d8c7dbb8..02ab0ffee5 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -52,14 +52,14 @@ width="333">
visible="false" />
<icon
follows="top|left"
- height="32"
- image_name="TabIcon_Appearance_Off"
+ height="31"
+ image_name="Shirt_Large"
name="outfit_icon"
mouse_opaque="false"
visible="true"
- left="0"
+ left="1"
top="0"
- width="32" />
+ width="31" />
<text
font="SansSerifSmall"
text_color="EmphasisColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/textbase.xml b/indra/newview/skins/default/xui/en/widgets/textbase.xml
index f4dc192bc3..b2da2147c1 100644
--- a/indra/newview/skins/default/xui/en/widgets/textbase.xml
+++ b/indra/newview/skins/default/xui/en/widgets/textbase.xml
@@ -1,3 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<textbase clip_partial="false"
+ halign="left"
+ valign="top"
font="SansSerif"/>