summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-05-27 12:28:32 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-05-27 12:28:32 +0100
commite5273960de222ffae32405fde8e9fd566ff72d0a (patch)
treee4dbc9e0669f49f3e222ee9b3e8856700e300c98 /indra/newview
parent63200e2a5bfc7538fd8114464000f35798670f23 (diff)
parent423398081b5c4402ebc162c43eaf29acdeb9f423 (diff)
merge from PE's viewer-trunk
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llagentwearablesfetch.cpp12
-rw-r--r--indra/newview/llpaneleditwearable.cpp106
-rw-r--r--indra/newview/llpaneleditwearable.h15
-rw-r--r--indra/newview/llpanelgrouproles.cpp13
-rw-r--r--indra/newview/llpanelgrouproles.h3
-rw-r--r--indra/newview/llsidepanelappearance.cpp2
-rw-r--r--indra/newview/llstartup.cpp21
-rw-r--r--indra/newview/llstartup.h4
-rw-r--r--indra/newview/llvoavatar.cpp23
-rw-r--r--indra/newview/llvoavatar.h14
-rw-r--r--indra/newview/llvoavatarself.cpp26
-rw-r--r--indra/newview/llvoavatarself.h3
-rw-r--r--indra/newview/llworldview.cpp6
-rw-r--r--indra/newview/skins/default/textures/textures.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_edit.xml36
15 files changed, 247 insertions, 39 deletions
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index 03d09a3798..43a0d48d8b 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -37,6 +37,7 @@
#include "llagentwearables.h"
#include "llappearancemgr.h"
#include "llinventoryfunctions.h"
+#include "llstartup.h"
#include "llvoavatarself.h"
LLInitialWearablesFetch::LLInitialWearablesFetch(const LLUUID& cof_id) :
@@ -260,8 +261,11 @@ void LLLibraryOutfitsFetch::folderDone()
LLInventoryModel::item_array_t wearable_array;
gInventory.collectDescendents(mMyOutfitsID, cat_array, wearable_array,
LLInventoryModel::EXCLUDE_TRASH);
- // Early out if we already have items in My Outfits.
- if (cat_array.count() > 0 || wearable_array.count() > 0)
+
+ // Early out if we already have items in My Outfits
+ // except the case when My Outfits contains just initial outfit
+ if (cat_array.count() > 1 ||
+ cat_array.count() == 1 && cat_array[0]->getUUID() != LLAppearanceMgr::getInstance()->getBaseOutfitUUID())
{
mOutfitsPopulated = true;
return;
@@ -272,6 +276,7 @@ void LLLibraryOutfitsFetch::folderDone()
// If Library->Clothing->Initial Outfits exists, use that.
LLNameCategoryCollector matchFolderFunctor("Initial Outfits");
+ cat_array.clear();
gInventory.collectDescendentsIf(mLibraryClothingID,
cat_array, wearable_array,
LLInventoryModel::EXCLUDE_TRASH,
@@ -489,6 +494,9 @@ void LLLibraryOutfitsFetch::contentsDone()
llwarns << "Library folder import for uuid:" << folder_id << " failed to find folder." << llendl;
continue;
}
+
+ //initial outfit should be already in My Outfits
+ if (cat->getName() == LLStartUp::getInitialOutfitName()) continue;
// First, make a folder in the My Outfits directory.
LLUUID new_outfit_folder_id = gInventory.createNewCategory(mMyOutfitsID, LLFolderType::FT_OUTFIT, cat->getName());
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 8e9b164c09..b5b21584aa 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -645,6 +645,12 @@ BOOL LLPanelEditWearable::postBuild()
mWearablePtr = NULL;
+ configureAlphaCheckbox(LLVOAvatarDefines::TEX_LOWER_ALPHA, "lower alpha texture invisible");
+ configureAlphaCheckbox(LLVOAvatarDefines::TEX_UPPER_ALPHA, "upper alpha texture invisible");
+ configureAlphaCheckbox(LLVOAvatarDefines::TEX_HEAD_ALPHA, "head alpha texture invisible");
+ configureAlphaCheckbox(LLVOAvatarDefines::TEX_EYES_ALPHA, "eye alpha texture invisible");
+ configureAlphaCheckbox(LLVOAvatarDefines::TEX_HAIR_ALPHA, "hair alpha texture invisible");
+
return TRUE;
}
@@ -667,11 +673,10 @@ BOOL LLPanelEditWearable::isDirty() const
void LLPanelEditWearable::draw()
{
updateVerbs();
- if (getWearable())
+ if (getWearable() && getWearable()->getType() == LLWearableType::WT_SHAPE)
{
- LLWearableType::EType type = getWearable()->getType();
- updatePanelPickerControls(type);
- updateTypeSpecificControls(type);
+ //updating avatar height
+ updateTypeSpecificControls(LLWearableType::WT_SHAPE);
}
LLPanel::draw();
@@ -970,6 +975,13 @@ void LLPanelEditWearable::initializePanel()
for_each_picker_ctrl_entry <LLTextureCtrl> (getPanel(type), type, boost::bind(init_texture_ctrl, this, _1, _2));
updateVerbs();
+
+ if (getWearable())
+ {
+ LLWearableType::EType type = getWearable()->getType();
+ updatePanelPickerControls(type);
+ updateTypeSpecificControls(type);
+ }
}
void LLPanelEditWearable::toggleTypeSpecificControls(LLWearableType::EType type)
@@ -992,6 +1004,13 @@ void LLPanelEditWearable::updateTypeSpecificControls(LLWearableType::EType type)
std::string avatar_height_str = llformat("%.2f", gAgentAvatarp->mBodySize.mV[VZ]);
mTxtAvatarHeight->setTextArg("[HEIGHT]", avatar_height_str);
}
+
+ if (LLWearableType::WT_ALPHA == type)
+ {
+ updateAlphaCheckboxes();
+
+ initPreviousAlphaTextures();
+ }
}
void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index)
@@ -1217,4 +1236,83 @@ void LLPanelEditWearable::updateVerbs()
}
+void LLPanelEditWearable::configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name)
+{
+ LLCheckBoxCtrl* checkbox = mPanelAlpha->getChild<LLCheckBoxCtrl>(name);
+ checkbox->setCommitCallback(boost::bind(&LLPanelEditWearable::onInvisibilityCommit, this, checkbox, te));
+
+ mAlphaCheckbox2Index[name] = te;
+}
+
+void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te)
+{
+ if (!checkbox_ctrl) return;
+ if (!getWearable()) return;
+
+ llinfos << "onInvisibilityCommit, self " << this << " checkbox_ctrl " << checkbox_ctrl << llendl;
+
+ bool new_invis_state = checkbox_ctrl->get();
+ if (new_invis_state)
+ {
+ LLLocalTextureObject *lto = getWearable()->getLocalTextureObject(te);
+ mPreviousAlphaTexture[te] = lto->getID();
+
+ LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( IMG_INVISIBLE );
+ U32 index = gAgentWearables.getWearableIndex(getWearable());
+ gAgentAvatarp->setLocalTexture(te, image, FALSE, index);
+ gAgentAvatarp->wearableUpdated(getWearable()->getType(), FALSE);
+ }
+ else
+ {
+ // Try to restore previous texture, if any.
+ LLUUID prev_id = mPreviousAlphaTexture[te];
+ if (prev_id.isNull() || (prev_id == IMG_INVISIBLE))
+ {
+ prev_id = LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) );
+ }
+ if (prev_id.isNull()) return;
+
+ LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(prev_id);
+ if (!image) return;
+
+ U32 index = gAgentWearables.getWearableIndex(getWearable());
+ gAgentAvatarp->setLocalTexture(te, image, FALSE, index);
+ gAgentAvatarp->wearableUpdated(getWearable()->getType(), FALSE);
+ }
+
+ updatePanelPickerControls(getWearable()->getType());
+}
+
+void LLPanelEditWearable::updateAlphaCheckboxes()
+{
+ for(string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();
+ iter != mAlphaCheckbox2Index.end(); ++iter )
+ {
+ LLVOAvatarDefines::ETextureIndex te = (LLVOAvatarDefines::ETextureIndex)iter->second;
+ LLCheckBoxCtrl* ctrl = mPanelAlpha->getChild<LLCheckBoxCtrl>(iter->first);
+ if (ctrl)
+ {
+ ctrl->set(!gAgentAvatarp->isTextureVisible(te, mWearablePtr));
+ }
+ }
+}
+
+void LLPanelEditWearable::initPreviousAlphaTextures()
+{
+ initPreviousAlphaTextureEntry(TEX_LOWER_ALPHA);
+ initPreviousAlphaTextureEntry(TEX_UPPER_ALPHA);
+ initPreviousAlphaTextureEntry(TEX_HEAD_ALPHA);
+ initPreviousAlphaTextureEntry(TEX_EYES_ALPHA);
+ initPreviousAlphaTextureEntry(TEX_LOWER_ALPHA);
+}
+
+void LLPanelEditWearable::initPreviousAlphaTextureEntry(LLVOAvatarDefines::ETextureIndex te)
+{
+ LLLocalTextureObject *lto = getWearable()->getLocalTextureObject(te);
+ if (lto)
+ {
+ mPreviousAlphaTexture[te] = lto->getID();
+ }
+}
+
// EOF
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 6f9ac82407..0953f09b6c 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -36,8 +36,10 @@
#include "llpanel.h"
#include "llscrollingpanellist.h"
#include "llmodaldialog.h"
+#include "llvoavatardefines.h"
#include "llwearabletype.h"
+class LLCheckBoxCtrl;
class LLWearable;
class LLTextEditor;
class LLTextBox;
@@ -86,6 +88,13 @@ private:
void toggleTypeSpecificControls(LLWearableType::EType type);
void updateTypeSpecificControls(LLWearableType::EType type);
+ //alpha mask checkboxes
+ void configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name);
+ void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te);
+ void updateAlphaCheckboxes();
+ void initPreviousAlphaTextures();
+ void initPreviousAlphaTextureEntry(LLVOAvatarDefines::ETextureIndex te);
+
// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
LLWearable *mWearablePtr;
LLViewerInventoryItem* mWearableItem;
@@ -122,6 +131,12 @@ private:
LLPanel *mPanelSkirt;
LLPanel *mPanelAlpha;
LLPanel *mPanelTattoo;
+
+ typedef std::map<std::string, LLVOAvatarDefines::ETextureIndex> string_texture_index_map_t;
+ string_texture_index_map_t mAlphaCheckbox2Index;
+
+ typedef std::map<LLVOAvatarDefines::ETextureIndex, LLUUID> s32_uuid_map_t;
+ s32_uuid_map_t mPreviousAlphaTexture;
};
#endif
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 7dec2251e8..b356fe6bfd 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -1749,8 +1749,7 @@ BOOL LLPanelGroupRolesSubTab::postBuildSubTab(LLView* root)
mRoleTitle->setKeystrokeCallback(onPropertiesKey, this);
mRoleDescription->setCommitOnFocusLost(TRUE);
- mRoleDescription->setCommitCallback(onDescriptionCommit, this);
- mRoleDescription->setFocusReceivedCallback(boost::bind(onDescriptionFocus, _1, this));
+ mRoleDescription->setKeystrokeCallback(boost::bind(&LLPanelGroupRolesSubTab::onDescriptionKeyStroke, this, _1));
setFooterEnabled(FALSE);
@@ -2206,14 +2205,10 @@ void LLPanelGroupRolesSubTab::onPropertiesKey(LLLineEditor* ctrl, void* user_dat
self->notifyObservers();
}
-// static
-void LLPanelGroupRolesSubTab::onDescriptionFocus(LLFocusableElement* ctrl, void* user_data)
+void LLPanelGroupRolesSubTab::onDescriptionKeyStroke(LLTextEditor* caller)
{
- LLPanelGroupRolesSubTab* self = static_cast<LLPanelGroupRolesSubTab*>(user_data);
- if (!self) return;
-
- self->mHasRoleChange = TRUE;
- self->notifyObservers();
+ mHasRoleChange = TRUE;
+ notifyObservers();
}
// static
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h
index 44aa7cea38..cb7941ad9e 100644
--- a/indra/newview/llpanelgrouproles.h
+++ b/indra/newview/llpanelgrouproles.h
@@ -244,8 +244,9 @@ public:
static void onPropertiesKey(LLLineEditor*, void*);
+ void onDescriptionKeyStroke(LLTextEditor* caller);
+
static void onDescriptionCommit(LLUICtrl*, void*);
- static void onDescriptionFocus(LLFocusableElement*, void*);
static void onMemberVisibilityChange(LLUICtrl*, void*);
void handleMemberVisibilityChange(bool value);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 010d593b27..707fc1555a 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -344,10 +344,10 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *we
// Toggle panel visibility.
mEditWearable->setVisible(visible);
- mEditWearable->setWearable(wearable);
if (visible)
{
+ mEditWearable->setWearable(wearable);
mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency
if (!disable_camera_switch && gSavedSettings.getBOOL("AppearanceCameraMovement") )
{
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 0a464b3b6c..466c154f36 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -225,6 +225,7 @@ extern S32 gStartImageHeight;
static bool gGotUseCircuitCodeAck = false;
static std::string sInitialOutfit;
static std::string sInitialOutfitGender; // "male" or "female"
+static boost::signals2::connection sWearablesLoadedCon;
static bool gUseCircuitCallbackCalled = false;
@@ -2430,6 +2431,8 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
}
else
{
+ sWearablesLoadedCon = gAgentWearables.addLoadedCallback(LLStartUp::saveInitialOutfit);
+
bool do_copy = true;
bool do_append = false;
LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
@@ -2475,6 +2478,24 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
}
+//static
+void LLStartUp::saveInitialOutfit()
+{
+ if (sInitialOutfit.empty()) return;
+
+ if (sWearablesLoadedCon.connected())
+ {
+ sWearablesLoadedCon.disconnect();
+ }
+
+ LLAppearanceMgr::getInstance()->makeNewOutfitLinks(sInitialOutfit);
+}
+
+std::string& LLStartUp::getInitialOutfitName()
+{
+ return sInitialOutfit;
+}
+
// Loads a bitmap to display during load
void init_start_screen(S32 location_id)
{
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
index 16cc74504f..e1e108ca6a 100644
--- a/indra/newview/llstartup.h
+++ b/indra/newview/llstartup.h
@@ -102,6 +102,10 @@ public:
static void loadInitialOutfit( const std::string& outfit_folder_name,
const std::string& gender_name );
+ //save loaded initial outfit into My Outfits category
+ static void saveInitialOutfit();
+
+ static std::string& getInitialOutfitName();
static bool dispatchURL();
// if we have a SLURL or sim string ("Ahern/123/45") that started
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4371396629..a72d7f9227 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7887,3 +7887,26 @@ BOOL LLVOAvatar::isTextureDefined(LLVOAvatarDefines::ETextureIndex te, U32 index
getImage(te, index)->getID() != IMG_DEFAULT);
}
+//virtual
+BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index) const
+{
+ if (isIndexLocalTexture(type))
+ {
+ return isTextureDefined(type, index);
+ }
+ else
+ {
+ // baked textures can use TE images directly
+ return ((isTextureDefined(type) || isSelf())
+ && (getTEImage(type)->getID() != IMG_INVISIBLE
+ || LLDrawPoolAlpha::sShowDebugAlpha));
+ }
+}
+
+//virtual
+BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const
+{
+ // non-self avatars don't have wearables
+ return FALSE;
+}
+
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 86a7cdae02..df47e9ba1d 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -462,7 +462,9 @@ public:
//--------------------------------------------------------------------
public:
virtual BOOL isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
- BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex index) const;
+ virtual BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
+ virtual BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const;
+
protected:
BOOL isFullyBaked();
static BOOL areAllNearbyInstancesBaked(S32& grey_avatars);
@@ -1039,14 +1041,4 @@ protected: // Shared with LLVOAvatarSelf
}; // LLVOAvatar
-//------------------------------------------------------------------------
-// Inlines
-//------------------------------------------------------------------------
-inline BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex te) const
-{
- return ((isTextureDefined(te) || isSelf())
- && (getTEImage(te)->getID() != IMG_INVISIBLE
- || LLDrawPoolAlpha::sShowDebugAlpha));
-}
-
#endif // LL_VO_AVATAR_H
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index cf3fb01b5a..a8e2f446c2 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1332,6 +1332,32 @@ BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32
return isDefined;
}
+//virtual
+BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index) const
+{
+ if (isIndexBakedTexture(type))
+ {
+ return LLVOAvatar::isTextureVisible(type);
+ }
+
+ LLUUID tex_id = getLocalTextureID(type,index);
+ return (tex_id != IMG_INVISIBLE)
+ || (LLDrawPoolAlpha::sShowDebugAlpha);
+}
+
+//virtual
+BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const
+{
+ if (isIndexBakedTexture(type))
+ {
+ return LLVOAvatar::isTextureVisible(type);
+ }
+
+ U32 index = gAgentWearables.getWearableIndex(wearable);
+ return isTextureVisible(type,index);
+}
+
+
//-----------------------------------------------------------------------------
// requestLayerSetUploads()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 8e6d9698f2..189c1ac808 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -179,6 +179,9 @@ public:
BOOL isLocalTextureDataFinal(const LLTexLayerSet* layerset) const;
// If you want to check all textures of a given type, pass gAgentWearables.getWearableCount() for index
/*virtual*/ BOOL isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
+ /*virtual*/ BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
+ /*virtual*/ BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const;
+
//--------------------------------------------------------------------
// Local Textures
diff --git a/indra/newview/llworldview.cpp b/indra/newview/llworldview.cpp
index 7261e63147..b44a365677 100644
--- a/indra/newview/llworldview.cpp
+++ b/indra/newview/llworldview.cpp
@@ -44,6 +44,7 @@ static LLDefaultChildRegistry::Register<LLWorldView> r("world_view");
LLWorldView::LLWorldView(const Params& p)
: LLUICtrl (p)
{
+ gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLWorldView::toggleSidebarCameraMovement, this, _2));
}
void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
@@ -59,3 +60,8 @@ void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
LLUICtrl::reshape(width, height, called_from_parent);
}
+void LLWorldView::toggleSidebarCameraMovement(const LLSD::Boolean& new_visibility)
+{
+ reshape(getParent()->getRect().getWidth(),getRect().getHeight());
+}
+
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 2c1cb59387..91890009f4 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -111,7 +111,7 @@ with the same filename but different name
<texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" />
<texture name="DownArrow_Off" file_name="icons/DownArrow_off.png" preload="false" />
- <texture name="Dragbar" file_name="icons/Dragbar.png" preload="false" />
+ <texture name="Dragbar" file_name="windows/Dragbar.png" preload="false" scale.left="35" scale.top="5" scale.right="29" scale.bottom="5" />
<texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
<texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index 895cc4e3cc..bc984ccc44 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -150,8 +150,14 @@
<!-- LIST OF WEARABLES (CURRENT OUTFIT/ WEARABLES TO ADD) -->
+<!-- *NOTE: border_size is used to calculate space between layout panel and for resize bar height
+required height for dragbar is 10, so resizebar height should be 10 px.
+It is calculated as border_size + 2*UIResizeBarOverlap
+-->
<layout_stack
animate="false"
+ border_size="8"
+ clip="false"
default_tab_group="2"
follows="all"
height="495"
@@ -222,15 +228,24 @@
<layout_panel
+ background_visible="true"
+ bg_alpha_color="DkGray2"
auto_resize="true"
default_tab_group="3"
- height="210"
+ height="211"
min_height="210"
name="add_wearables_panel"
width="313"
tab_group="2"
user_resize="true"
visible="false">
+ <icon
+ follows="left|top|right"
+ height="10"
+ image_name="Dragbar"
+ left="0"
+ top_pad="-9"
+ width="313" />
<text
follows="top|left|right"
font="SansSerifBold"
@@ -239,22 +254,19 @@
left="5"
name="add_to_outfit_label"
text_color="LtGray"
- top="3"
+ top="4"
value="Add to Outfit:"
use_ellipses="true"
width="150" />
<button
- follows="top|left|right"
+ follows="top|right"
height="20"
- image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Search_Icon"
- image_selected="Toolbar_Middle_Selected"
- image_unselected="Toolbar_Middle_Off"
is_toggle="true"
layout="topleft"
left_pad="5"
name="filter_button"
- top="3"
+ top_delta="0"
width="20" />
<combo_box
follows="top|left|right"
@@ -262,14 +274,14 @@
layout="topleft"
right="-5"
name="filter_wearables_combobox"
- top="2"
+ top_delta="0"
width="110"/>
<layout_stack
animate="true"
follows="all"
height="155"
- width="311"
+ width="313"
layout="topleft"
name="filter_panels"
top_pad="5"
@@ -301,6 +313,8 @@
</layout_panel>
<layout_panel
auto_resize="true"
+ background_visible="true"
+ bg_alpha_color="0.107 0.107 0.107 1"
height="145"
min_width="130"
name="inventory_panel"
@@ -308,6 +322,7 @@
user_resize="true">
<inventory_panel
allow_multi_select="true"
+ background_visible="false"
border="false"
follows="left|top|right|bottom"
height="140"
@@ -321,7 +336,7 @@
<panel
name="filtered_wearables_panel"
background_opaque="true"
- background_visible="true"
+ background_visible="false"
layout="topleft"
follows="left|top|right|bottom"
border="false"
@@ -332,6 +347,7 @@
top_delta="0"
visible="true">
<wearable_items_list
+ color="0.107 0.107 0.107 1"
name="filtered_wearables_list"
allow_select="true"
layout="topleft"