summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorDessie Linden <dessie@lindenlab.com>2010-07-01 07:03:09 -0700
committerDessie Linden <dessie@lindenlab.com>2010-07-01 07:03:09 -0700
commitfc9958a61854313d80a562e18555d2c63cc4bfe5 (patch)
tree5d1c1617a60733defa424232e8bef15971b03b72 /indra
parent67f0a792a286546b7213666d337b394517342394 (diff)
parentaf4a85009011119e7787e2b30416919117edccf9 (diff)
Merged from viewer-release
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/llaccordionctrltab.cpp19
-rw-r--r--indra/llui/llaccordionctrltab.h3
-rw-r--r--indra/llui/llnotifications.cpp32
-rw-r--r--indra/llui/llnotifications.h2
-rw-r--r--indra/newview/llappearancemgr.cpp99
-rw-r--r--indra/newview/llappearancemgr.h2
-rw-r--r--indra/newview/llchannelmanager.h1
-rw-r--r--indra/newview/llimview.cpp4
-rw-r--r--indra/newview/llnavigationbar.h11
-rw-r--r--indra/newview/lloutfitslist.cpp2
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp8
-rw-r--r--indra/newview/llpanelplaceinfo.cpp1
-rw-r--r--indra/newview/llpaneltopinfobar.h15
-rw-r--r--indra/newview/llscreenchannel.cpp7
-rw-r--r--indra/newview/llsidetray.cpp13
-rw-r--r--indra/newview/lltexturectrl.cpp2
-rw-r--r--indra/newview/lltoast.cpp8
-rw-r--r--indra/newview/lltoast.h2
-rw-r--r--indra/newview/skins/default/colors.xml6
-rw-r--r--indra/newview/skins/default/xui/da/floater_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_world_map.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_publish_classified.xml26
-rw-r--r--indra/newview/skins/default/xui/en/floater_stats.xml3
-rw-r--r--indra/newview/skins/default/xui/en/menu_object.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_outfit_gear.xml1
-rw-r--r--indra/newview/skins/default/xui/en/menu_wearing_gear.xml1
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_classified.xml29
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml11
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_list.xml2
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml8
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/accordion_tab.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/it/floater_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_world_map.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_world_map.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/floater_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_world_map.xml8
40 files changed, 265 insertions, 127 deletions
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 09cb15d7a8..584d45612e 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -78,6 +78,8 @@ public:
void setTitleFontStyle(std::string style);
+ void setTitleColor(LLUIColor);
+
void setSelected(bool is_selected) { mIsSelected = is_selected; }
virtual void onMouseEnter(S32 x, S32 y, MASK mask);
@@ -192,6 +194,14 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::setTitleFontStyle(std::string
}
}
+void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::setTitleColor(LLUIColor color)
+{
+ if(mHeaderTextbox)
+ {
+ mHeaderTextbox->setColor(color);
+ }
+}
+
void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw()
{
S32 width = getRect().getWidth();
@@ -520,6 +530,15 @@ void LLAccordionCtrlTab::setTitleFontStyle(std::string style)
}
}
+void LLAccordionCtrlTab::setTitleColor(LLUIColor color)
+{
+ LLAccordionCtrlTabHeader* header = findChild<LLAccordionCtrlTabHeader>(DD_HEADER_NAME);
+ if (header)
+ {
+ header->setTitleColor(color);
+ }
+}
+
boost::signals2::connection LLAccordionCtrlTab::setFocusReceivedCallback(const focus_signal_t::slot_type& cb)
{
LLAccordionCtrlTabHeader* header = findChild<LLAccordionCtrlTabHeader>(DD_HEADER_NAME);
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index e17ecc5319..5646a355d0 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -124,6 +124,9 @@ public:
// Set text font style in LLAccordionCtrlTabHeader
void setTitleFontStyle(std::string style);
+ // Set text color in LLAccordionCtrlTabHeader
+ void setTitleColor(LLUIColor color);
+
boost::signals2::connection setFocusReceivedCallback(const focus_signal_t::slot_type& cb);
boost::signals2::connection setFocusLostCallback(const focus_signal_t::slot_type& cb);
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 7b8f51ae3c..621e72ce38 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -560,21 +560,6 @@ void LLNotification::setResponseFunctor(const LLNotificationResponderPtr& respon
mResponder = responder;
}
-bool LLNotification::payloadContainsAll(const std::vector<std::string>& required_fields) const
-{
- for(std::vector<std::string>::const_iterator required_fields_it = required_fields.begin();
- required_fields_it != required_fields.end();
- required_fields_it++)
- {
- std::string required_field_name = *required_fields_it;
- if( ! getPayload().has(required_field_name))
- {
- return false; // a required field was not found
- }
- }
- return true; // all required fields were found
-}
-
bool LLNotification::isEquivalentTo(LLNotificationPtr that) const
{
if (this->mTemplatep->mName != that->mTemplatep->mName)
@@ -583,11 +568,22 @@ bool LLNotification::isEquivalentTo(LLNotificationPtr that) const
}
if (this->mTemplatep->mUnique)
{
+ const LLSD& these_substitutions = this->getSubstitutions();
+ const LLSD& those_substitutions = that->getSubstitutions();
+
// highlander bit sez there can only be one of these
- return
- this->payloadContainsAll(that->mTemplatep->mUniqueContext) &&
- that->payloadContainsAll(this->mTemplatep->mUniqueContext);
+ for (std::vector<std::string>::const_iterator it = mTemplatep->mUniqueContext.begin(), end_it = mTemplatep->mUniqueContext.end();
+ it != end_it;
+ ++it)
+ {
+ if (these_substitutions.get(*it).asString() != those_substitutions.get(*it).asString())
+ {
+ return false;
+ }
+ }
+ return true;
}
+
return false;
}
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index c942a32512..8bfada0e71 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -400,8 +400,6 @@ private:
void cancel();
- bool payloadContainsAll(const std::vector<std::string>& required_fields) const;
-
public:
// constructor from a saved notification
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index ce022ac840..547dfd7006 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -55,6 +55,25 @@
#include "llviewerregion.h"
#include "llwearablelist.h"
+// RAII thingy to guarantee that a variable gets reset when the Setter
+// goes out of scope. More general utility would be handy - TODO:
+// check boost.
+class BoolSetter
+{
+public:
+ BoolSetter(bool& var):
+ mVar(var)
+ {
+ mVar = true;
+ }
+ ~BoolSetter()
+ {
+ mVar = false;
+ }
+private:
+ bool& mVar;
+};
+
char ORDER_NUMBER_SEPARATOR('@');
class LLOutfitUnLockTimer: public LLEventTimer
@@ -1537,16 +1556,89 @@ bool sort_by_description(const LLInventoryItem* item1, const LLInventoryItem* it
return item1->LLInventoryItem::getDescription() < item2->LLInventoryItem::getDescription();
}
+void item_array_diff(LLInventoryModel::item_array_t& full_list,
+ LLInventoryModel::item_array_t& keep_list,
+ LLInventoryModel::item_array_t& kill_list)
+
+{
+ for (LLInventoryModel::item_array_t::iterator it = full_list.begin();
+ it != full_list.end();
+ ++it)
+ {
+ LLViewerInventoryItem *item = *it;
+ if (keep_list.find(item) < 0) // Why on earth does LLDynamicArray need to redefine find()?
+ {
+ kill_list.push_back(item);
+ }
+ }
+}
+
+void LLAppearanceMgr::enforceItemCountLimits()
+{
+ S32 purge_count = 0;
+
+ LLInventoryModel::item_array_t body_items;
+ getDescendentsOfAssetType(getCOF(), body_items, LLAssetType::AT_BODYPART, false);
+ LLInventoryModel::item_array_t curr_body_items = body_items;
+ removeDuplicateItems(body_items);
+ filterWearableItems(body_items, 1);
+ LLInventoryModel::item_array_t kill_body_items;
+ item_array_diff(curr_body_items,body_items,kill_body_items);
+ for (LLInventoryModel::item_array_t::iterator it = kill_body_items.begin();
+ it != kill_body_items.end();
+ ++it)
+ {
+ LLViewerInventoryItem *item = *it;
+ llinfos << "purging dup body part " << item->getName() << llendl;
+ gInventory.purgeObject(item->getUUID());
+ purge_count++;
+ }
+
+ LLInventoryModel::item_array_t wear_items;
+ getDescendentsOfAssetType(getCOF(), wear_items, LLAssetType::AT_CLOTHING, false);
+ LLInventoryModel::item_array_t curr_wear_items = wear_items;
+ removeDuplicateItems(wear_items);
+ filterWearableItems(wear_items, LLAgentWearables::MAX_CLOTHING_PER_TYPE);
+ LLInventoryModel::item_array_t kill_wear_items;
+ item_array_diff(curr_wear_items,wear_items,kill_wear_items);
+ for (LLInventoryModel::item_array_t::iterator it = kill_wear_items.begin();
+ it != kill_wear_items.end();
+ ++it)
+ {
+ LLViewerInventoryItem *item = *it;
+ llinfos << "purging excess clothing item " << item->getName() << llendl;
+ gInventory.purgeObject(item->getUUID());
+ purge_count++;
+ }
+
+ if (purge_count>0)
+ {
+ gInventory.notifyObservers();
+ }
+}
+
void LLAppearanceMgr::updateAppearanceFromCOF()
{
+ if (mIsInUpdateAppearanceFromCOF)
+ {
+ llwarns << "Called updateAppearanceFromCOF inside updateAppearanceFromCOF, skipping" << llendl;
+ return;
+ }
+
+ BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);
+
+ llinfos << "starting" << llendl;
+
//checking integrity of the COF in terms of ordering of wearables,
//checking and updating links' descriptions of wearables in the COF (before analyzed for "dirty" state)
updateClothingOrderingInfo();
+ // Remove duplicate or excess wearables. Should normally be enforced at the UI level, but
+ // this should catch anything that gets through.
+ enforceItemCountLimits();
+
// update dirty flag to see if the state of the COF matches
// the saved outfit stored as a folder link
- llinfos << "starting" << llendl;
-
updateIsDirty();
dumpCat(getCOF(),"COF, start");
@@ -2493,7 +2585,8 @@ void LLAppearanceMgr::dumpItemArray(const LLInventoryModel::item_array_t& items,
LLAppearanceMgr::LLAppearanceMgr():
mAttachmentInvLinkEnabled(false),
- mOutfitIsDirty(false)
+ mOutfitIsDirty(false),
+ mIsInUpdateAppearanceFromCOF(false)
{
LLOutfitObserver& outfit_observer = LLOutfitObserver::instance();
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 61779d5c0e..afd1bf3ade 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -66,6 +66,7 @@ public:
void renameOutfit(const LLUUID& outfit_id);
void takeOffOutfit(const LLUUID& cat_id);
void addCategoryToCurrentOutfit(const LLUUID& cat_id);
+ void enforceItemCountLimits();
// Copy all items and the src category itself.
void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
@@ -203,6 +204,7 @@ private:
std::set<LLUUID> mRegisteredAttachments;
bool mAttachmentInvLinkEnabled;
bool mOutfitIsDirty;
+ bool mIsInUpdateAppearanceFromCOF; // to detect recursive calls.
/**
* Lock for blocking operations on outfit until server reply or timeout exceed
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 8c725f2660..2d6aa181c5 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -119,6 +119,7 @@ public:
*/
static LLNotificationsUI::LLScreenChannel* getNotificationScreenChannel();
+ std::vector<ChannelElem>& getChannelList() { return mChannelList;}
private:
LLScreenChannel* createChannel(LLChannelManager::Params& p);
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 6d3998bb96..a2b72e7d74 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1929,9 +1929,9 @@ BOOL LLIncomingCallDialog::postBuild()
mLifetimeTimer.stop();
}
- //it's not possible to connect to existing Ad-Hoc chat through incoming ad-hoc call
+ //it's not possible to connect to existing Ad-Hoc/Group chat through incoming ad-hoc call
//and no IM for avaline
- childSetVisible("Start IM", is_avatar && notify_box_type != "VoiceInviteAdHoc");
+ childSetVisible("Start IM", is_avatar && notify_box_type != "VoiceInviteAdHoc" && notify_box_type != "VoiceInviteGroup");
setCanDrag(FALSE);
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index b512f2a79c..03f17af09b 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -87,9 +87,10 @@ protected:
* Web browser-like navigation bar.
*/
class LLNavigationBar
- : public LLPanel, public LLSingleton<LLNavigationBar>
+ : public LLPanel, public LLSingleton<LLNavigationBar>, private LLDestroyClass<LLNavigationBar>
{
LOG_CLASS(LLNavigationBar);
+ friend class LLDestroyClass<LLNavigationBar>;
public:
LLNavigationBar();
@@ -136,6 +137,14 @@ private:
void fillSearchComboBox();
+ static void destroyClass()
+ {
+ if (LLNavigationBar::instanceExists())
+ {
+ LLNavigationBar::getInstance()->setEnabled(FALSE);
+ }
+ }
+
LLMenuGL* mTeleportHistoryMenu;
LLPullButton* mBtnBack;
LLPullButton* mBtnForward;
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 075cfa0543..23c7e64cce 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -548,6 +548,7 @@ void LLOutfitsList::highlightBaseOutfit()
if (mOutfitsMap[mHighlightedOutfitUUID])
{
mOutfitsMap[mHighlightedOutfitUUID]->setTitleFontStyle("NORMAL");
+ mOutfitsMap[mHighlightedOutfitUUID]->setTitleColor(LLUIColorTable::instance().getColor("AccordionHeaderTextColor"));
}
mHighlightedOutfitUUID = base_id;
@@ -555,6 +556,7 @@ void LLOutfitsList::highlightBaseOutfit()
if (mOutfitsMap[base_id])
{
mOutfitsMap[base_id]->setTitleFontStyle("BOLD");
+ mOutfitsMap[base_id]->setTitleColor(LLUIColorTable::instance().getColor("SelectedOutfitTextColor"));
}
}
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 462ba2dfa5..c5d259e517 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -262,6 +262,14 @@ void LLPanelOutfitsInventory::updateListCommands()
mListCommands->childSetEnabled("wear_btn", wear_enabled);
mListCommands->childSetVisible("wear_btn", wear_visible);
mSaveComboBtn->setMenuItemEnabled("save_outfit", make_outfit_enabled);
+ if (mMyOutfitsPanel->hasItemSelected())
+ {
+ mListCommands->childSetToolTip("wear_btn", getString("wear_items_tooltip"));
+ }
+ else
+ {
+ mListCommands->childSetToolTip("wear_btn", getString("wear_outfit_tooltip"));
+ }
}
void LLPanelOutfitsInventory::showGearMenu()
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index db305b25fa..8c1f5d0915 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -123,6 +123,7 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)
void LLPanelPlaceInfo::setInfoType(EInfoType type)
{
mTitle->setText(mCurrentTitle);
+ mTitle->setToolTip(mCurrentTitle);
mInfoType = type;
}
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index e417a06a64..6e6fbc08ab 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -40,10 +40,12 @@ class LLTextBox;
class LLIconCtrl;
class LLParcelChangeObserver;
-class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>
+class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
{
LOG_CLASS(LLPanelTopInfoBar);
+ friend class LLDestroyClass<LLPanelTopInfoBar>;
+
public:
LLPanelTopInfoBar();
~LLPanelTopInfoBar();
@@ -145,6 +147,17 @@ private:
*/
void setParcelInfoText(const std::string& new_text);
+ /**
+ * Implementation of LLDestroyClass<LLSideTray>
+ */
+ static void destroyClass()
+ {
+ if (LLPanelTopInfoBar::instanceExists())
+ {
+ LLPanelTopInfoBar::getInstance()->setEnabled(FALSE);
+ }
+ }
+
LLButton* mInfoBtn;
LLTextBox* mParcelInfoText;
LLTextBox* mDamageText;
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 55c8809184..ef89c07c60 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -136,8 +136,11 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
{
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->getCollapseSignal().connect(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this, _2));
+ if(LLSideTray::instanceCreated())
+ {
+ LLSideTray* side_bar = LLSideTray::getInstance();
+ side_bar->getCollapseSignal().connect(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this, _2));
+ }
S32 channel_top = gViewerWindow->getWorldViewRectScaled().getHeight();
S32 channel_bottom = gViewerWindow->getWorldViewRectScaled().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index fed39c362e..98282c1673 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -49,12 +49,15 @@
#include "llfloater.h" //for gFloaterView
#include "lliconctrl.h"//for OpenClose tab icon
#include "llsidetraypanelcontainer.h"
+#include "llscreenchannel.h"
+#include "llchannelmanager.h"
#include "llwindow.h"//for SetCursor
#include "lltransientfloatermgr.h"
//#include "llscrollcontainer.h"
using namespace std;
+using namespace LLNotificationsUI;
static LLRootViewRegistry::Register<LLSideTray> t1("side_tray");
static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab");
@@ -276,6 +279,16 @@ BOOL LLSideTray::postBuild()
LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
+ //EXT-8045
+ //connect all already created channels to reflect sidetray collapse/expand
+ std::vector<LLChannelManager::ChannelElem>& channels = LLChannelManager::getInstance()->getChannelList();
+ for(std::vector<LLChannelManager::ChannelElem>::iterator it = channels.begin();it!=channels.end();++it)
+ {
+ if ((*it).channel)
+ {
+ getCollapseSignal().connect(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel, _2));
+ }
+ }
return true;
}
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index f3530b69db..0b86cefa1d 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -825,7 +825,7 @@ void LLFloaterTexturePicker::onFilterEdit(const std::string& search_string )
}
}
- mInventoryPanel->setFilterSubString(upper_case_search_string);
+ mInventoryPanel->setFilterSubString(search_string);
}
void LLFloaterTexturePicker::onTextureSelect( const LLTextureEntry& te )
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 9abfab300c..2bb573c263 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -112,6 +112,14 @@ LLToast::LLToast(const LLToast::Params& p)
mOnMouseEnterSignal.connect(p.on_mouse_enter());
}
+void LLToast::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ // We shouldn't use reshape from LLModalDialog since it changes toasts position.
+ // Toasts position should be controlled only by toast screen channel, see LLScreenChannelBase.
+ // see EXT-8044
+ LLFloater::reshape(width, height, called_from_parent);
+}
+
//--------------------------------------------------------------------------
BOOL LLToast::postBuild()
{
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 4211f21ef1..c0da656685 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -106,6 +106,8 @@ public:
virtual ~LLToast();
BOOL postBuild();
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
// Toast handlers
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index e8a893e31b..2188c71ff9 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -97,6 +97,9 @@
<!-- UI Definitions -->
<color
+ name="AccordionHeaderTextColor"
+ reference="LtGray" />
+ <color
name="AgentChatColor"
reference="White" />
<color
@@ -646,6 +649,9 @@
name="ScrollbarTrackColor"
reference="Black" />
<color
+ name="SelectedOutfitTextColor"
+ reference="EmphasisColor" />
+ <color
name="SilhouetteChildColor"
value="0.13 0.42 0.77 1" />
<color
diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml
index 4dec9a9ba7..ca18faa0bb 100644
--- a/indra/newview/skins/default/xui/da/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/da/floater_world_map.xml
@@ -35,11 +35,11 @@
<text name="pg_label">
Generelt
</text>
- <check_box name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderat
</text>
- <text name="adult_label">
+ <text name="events_adult_label">
Voksent
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
index fb3a4ba9b5..f54d8c3328 100644
--- a/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -39,12 +39,12 @@
<text name="pg_label">
Generell
</text>
- <check_box label="Mature" name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box label="Mature" name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderat
</text>
- <check_box label="Adult" name="event_adult_chk"/>
- <text name="adult_label">
+ <check_box label="Adult" name="events_adult_chk"/>
+ <text name="events_adult_label">
Adult
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
index 3225843d09..f25c170f33 100644
--- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml
+++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
@@ -5,7 +5,6 @@
height="200"
layout="topleft"
name="publish_classified"
- help_topic="price_for_listing"
title="Publishing Classified"
width="320">
<text
@@ -29,8 +28,8 @@ Remember, Classified fees are non-refundable.
halign="left"
height="23"
increment="1"
- label_width="70"
- label="Price for Ad: "
+ label_width="45"
+ label="Price: L$ "
v_pad="10"
layout="topleft"
left="15"
@@ -41,27 +40,6 @@ Remember, Classified fees are non-refundable.
top_pad="10"
tool_tip="Price for listing."
width="150" />
- <text
- follows="top|left"
- font="SansSerif"
- height="60"
- layout="topleft"
- left_pad="5"
- top_delta="0"
- word_wrap="true"
- value="L$"
- name="l$_text" />
- <text
- follows="top|right"
- font="SansSerif"
- height="20"
- layout="topleft"
- left="15"
- name="more_info_text"
- top_pad="-20"
- width="300">
-More info (link to classified help)
- </text>
<button
follows="top|left"
height="22"
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index f9dacf0207..b87cb9a433 100644
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -361,8 +361,7 @@
<stat_view
name="physicsdetail"
label="Physics Details"
- show_label="true"
- display_children="false">
+ show_label="true">
<stat_bar
name="physicspinnedtasks"
label="Pinned Objects"
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 6ca8766e3f..397e61c97a 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -18,7 +18,7 @@
name="Edit...">
<menu_item_call.on_click
function="Object.Edit" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="EnableEdit"/>
</menu_item_call>
<menu_item_call
@@ -26,7 +26,7 @@
name="Build">
<menu_item_call.on_click
function="Object.Build" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="EnableEdit"/>
</menu_item_call>
<menu_item_call
@@ -44,7 +44,7 @@
name="Object Sit">
<menu_item_call.on_click
function="Object.SitOrStand" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="Object.SitVisible" />
<menu_item_call.on_enable
function="Object.EnableSitOrStand"
@@ -56,7 +56,7 @@
name="Object Stand Up">
<menu_item_call.on_click
function="Object.SitOrStand" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="Object.StandUpVisible" />
<menu_item_call.on_enable
function="Object.EnableSitOrStand"
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index c4c7a5034a..732b8a788d 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu
layout="topleft"
+ visible="false"
name="Gear Outfit">
<menu_item_call
label="Wear - Replace Current Outfit"
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 84431a2f69..747352cb29 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu
layout="topleft"
+ visible="false"
name="Gear Wearing">
<menu_item_call
label="Edit Outfit"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 88732fee7d..290c8c55a9 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4886,6 +4886,10 @@ If you want to view streaming media on parcels that support it you should go to
persist="true"
type="notify">
No Media Plugin was found to handle the "[MIME_TYPE]" mime type. Media of this type will be unavailable.
+ <unique>
+ <context key="[MIME_TYPE]"/>
+ </unique>
+
</notification>
<notification
icon="alertmodal.tga"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index 3f41973b72..cbdd548577 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -253,35 +253,6 @@
width="20"/>
</icons_combo_box.item>
</icons_combo_box>
- <text
- follows="left|top"
- font.style="BOLD"
- height="10"
- layout="topleft"
- left="10"
- name="price_for_listing_label"
- text_color="white"
- top_pad="15"
- value="Price for listing:"
- width="250" />
- <spinner
- decimal_digits="0"
- follows="left|top"
- halign="left"
- height="23"
- increment="1"
- label_width="20"
- label="L$"
- v_pad="10"
- layout="topleft"
- left="10"
- value="50"
- min_val="50"
- max_val="99999"
- name="price_for_listing"
- top_pad="5"
- tool_tip="Price for listing."
- width="105" />
<check_box
height="16"
label="Auto renew each week"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index 58d3dbcc37..82b69ba8dc 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -12,13 +12,21 @@
min_width="240"
width="320"
border="false">
+ <panel.string
+ name="wear_outfit_tooltip">
+ Wear selected outfit
+ </panel.string>
+ <panel.string
+ name="wear_items_tooltip">
+ Wear selected items
+ </panel.string>
<tab_container
follows="all"
height="539"
layout="topleft"
left="5"
name="appearance_tabs"
- tab_min_width="140"
+ tab_min_width="150"
tab_height="30"
tab_position="top"
halign="center"
@@ -89,7 +97,6 @@
layout="topleft"
name="wear_btn"
left_pad="3"
- tool_tip="Wear selected outfit"
width="152" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index 62b23aa74c..27e23440df 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -16,7 +16,7 @@
bg_opaque_color="DkGray2"
no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
no_matched_tabs_text.v_pad="10"
- no_visible_tabs_text.value="There are no any outfits. Try [secondlife:///app/search/all/ Search]."
+ no_visible_tabs_text.value="..."
follows="all"
height="400"
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 9a07d3a48a..10d8c7dbb8 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -61,7 +61,7 @@ width="333">
top="0"
width="32" />
<text
- font="SansSerifSmallBold"
+ font="SansSerifSmall"
text_color="EmphasisColor"
width="300"
height="10"
@@ -89,15 +89,15 @@ width="333">
</text>
<button
follows="left|top"
- height="23"
+ height="28"
image_overlay="Edit_Wrench"
label=""
layout="topleft"
left="265"
name="edit_outfit_btn"
tool_tip="Edit this outfit"
- top="7"
- width="30" />
+ top="3"
+ width="28" />
<loading_indicator
follows="left|top"
height="24"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 799d440292..f7611b6833 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1939,7 +1939,7 @@ Clears (deletes) the media and all params from the given face.
<string name="InvFolder Uncompressed Sounds">Uncompressed Sounds</string>
<string name="InvFolder Animations">Animations</string>
<string name="InvFolder Gestures">Gestures</string>
- <string name="InvFolder favorite">Favorites</string>
+ <string name="InvFolder Favorite">Favorites</string>
<string name="InvFolder Current Outfit">Current Outfit</string>
<string name="InvFolder My Outfits">My Outfits</string>
<string name="InvFolder Accessories">Accessories</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
index 102dc0c16d..6f68c99021 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
@@ -9,6 +9,6 @@
header_image_over="Accordion_Over"
header_image_pressed="Accordion_Press"
header_image_focused="Accordion_Selected"
- header_text_color="LtGray"
+ header_text_color="AccordionHeaderTextColor"
font="SansSerif"
/>
diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml
index deda5b86c8..3135324816 100644
--- a/indra/newview/skins/default/xui/es/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_world_map.xml
@@ -35,11 +35,11 @@
<text name="pg_label">
General
</text>
- <check_box name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderado
</text>
- <text name="adult_label">
+ <text name="events_adult_label">
Adulto
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
index 4d500857ea..0047a3bb04 100644
--- a/indra/newview/skins/default/xui/fr/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml
@@ -35,11 +35,11 @@
<text name="pg_label">
Général
</text>
- <check_box initial_value="true" name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box initial_value="true" name="events_mature_chk"/>
+ <text name="events_mature_label">
Modéré
</text>
- <text name="adult_label">
+ <text name="events_adult_label">
Adulte
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml
index b07daac6fb..a6bd4ffbaf 100644
--- a/indra/newview/skins/default/xui/it/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/it/floater_world_map.xml
@@ -35,11 +35,11 @@
<text name="pg_label">
Generale
</text>
- <check_box name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderato
</text>
- <text name="adult_label">
+ <text name="events_adult_label">
Adulto
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
index ce9e7d0777..62670251d6 100644
--- a/indra/newview/skins/default/xui/ja/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml
@@ -39,12 +39,12 @@
<text name="pg_label">
General
</text>
- <check_box initial_value="true" label="Mature" name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box initial_value="true" label="Mature" name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderate
</text>
- <check_box label="Adult" name="event_adult_chk"/>
- <text name="adult_label">
+ <check_box label="Adult" name="events_adult_chk"/>
+ <text name="events_adult_label">
Adult
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/nl/floater_world_map.xml b/indra/newview/skins/default/xui/nl/floater_world_map.xml
index bc14f92126..2fee2ecf05 100644
--- a/indra/newview/skins/default/xui/nl/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/nl/floater_world_map.xml
@@ -26,8 +26,8 @@
Evenementen:
</text>
<check_box label="PG" name="event_chk"/>
- <check_box label="Mature" name="event_mature_chk"/>
- <check_box label="Adult" name="event_adult_chk"/>
+ <check_box label="Mature" name="events_mature_chk"/>
+ <check_box label="Adult" name="events_adult_chk"/>
<combo_box label="Online vrienden" name="friend combo" tool_tip="Vriend die op kaart getoond wordt">
<combo_box.item name="item1" label="Online vrienden"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml
index 05287ad42a..3e62393e7a 100644
--- a/indra/newview/skins/default/xui/pl/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml
@@ -35,11 +35,11 @@
<text name="pg_label">
Ogólne
</text>
- <check_box name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderuj
</text>
- <text name="adult_label">
+ <text name="events_adult_label">
Adult
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml
index 878d0b1973..3952b80269 100644
--- a/indra/newview/skins/default/xui/pt/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml
@@ -39,12 +39,12 @@
<text name="pg_label">
Público geral
</text>
- <check_box label="Mature" name="event_mature_chk"/>
- <text name="mature_label">
+ <check_box label="Mature" name="events_mature_chk"/>
+ <text name="events_mature_label">
Moderado
</text>
- <check_box label="Adult" name="event_adult_chk"/>
- <text name="adult_label">
+ <check_box label="Adult" name="events_adult_chk"/>
+ <text name="events_adult_label">
Adulto
</text>
</panel>