summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llaccordionctrl.cpp5
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llappearancemgr.cpp22
-rw-r--r--indra/newview/llavatarlist.cpp2
-rw-r--r--indra/newview/llchiclet.cpp4
-rw-r--r--indra/newview/llfolderview.h1
-rw-r--r--indra/newview/llimview.cpp8
-rw-r--r--indra/newview/llinventoryfunctions.cpp13
-rw-r--r--indra/newview/llinventoryfunctions.h19
-rw-r--r--indra/newview/lllocationinputctrl.cpp2
-rw-r--r--indra/newview/llpanelgenerictip.cpp6
-rw-r--r--indra/newview/llpanelonlinestatus.cpp5
-rw-r--r--indra/newview/llparticipantlist.cpp2
-rw-r--r--indra/newview/llscriptfloater.cpp27
-rw-r--r--indra/newview/llscriptfloater.h5
-rw-r--r--indra/newview/llsyswellwindow.cpp4
-rw-r--r--indra/newview/lltexturectrl.cpp4
-rw-r--r--indra/newview/llurllineeditorctrl.cpp5
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory_add.xml9
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml16
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_media.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_list.xml4
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml7
23 files changed, 130 insertions, 53 deletions
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 28125ccaaf..673631f99a 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -40,8 +40,6 @@
#include "llfocusmgr.h"
#include "lllocalcliprect.h"
-#include "lltrans.h"
-
#include "boost/bind.hpp"
static const S32 DRAGGER_BAR_MARGIN = 4;
@@ -74,7 +72,6 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
{
initNoTabsWidget(params.no_matched_tabs_text);
- mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());
mSingleExpansion = params.single_expansion;
if(mFitParent && !mSingleExpansion)
{
@@ -389,7 +386,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
{
LLTextBox::Params tp = tb_params;
tp.rect(getLocalRect());
- mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());
+ mNoMatchedTabsOrigString = tp.initial_value().asString();
mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index d51498f6d1..1c32f33290 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -11857,5 +11857,16 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>TipToastMessageLineCount</key>
+ <map>
+ <key>Comment</key>
+ <string>Max line count of text message on tip toast.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>10</integer>
+ </map>
</map>
</llsd>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index df048fef02..a7d90ab8d3 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2179,17 +2179,19 @@ void LLAppearanceMgr::updateIsDirty()
}
else
{
+ LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK);
+
LLInventoryModel::cat_array_t cof_cats;
LLInventoryModel::item_array_t cof_items;
- gInventory.collectDescendents(cof, cof_cats, cof_items,
- LLInventoryModel::EXCLUDE_TRASH);
+ gInventory.collectDescendentsIf(cof, cof_cats, cof_items,
+ LLInventoryModel::EXCLUDE_TRASH, collector);
LLInventoryModel::cat_array_t outfit_cats;
LLInventoryModel::item_array_t outfit_items;
- gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items,
- LLInventoryModel::EXCLUDE_TRASH);
+ gInventory.collectDescendentsIf(base_outfit, outfit_cats, outfit_items,
+ LLInventoryModel::EXCLUDE_TRASH, collector);
- if(outfit_items.count() != cof_items.count() -1)
+ if(outfit_items.count() != cof_items.count())
{
// Current outfit folder should have one more item than the outfit folder.
// this one item is the link back to the outfit folder itself.
@@ -2197,16 +2199,6 @@ void LLAppearanceMgr::updateIsDirty()
return;
}
- //getting rid of base outfit folder link to simplify comparison
- for (LLInventoryModel::item_array_t::iterator it = cof_items.begin(); it != cof_items.end(); ++it)
- {
- if (*it == base_outfit_item)
- {
- cof_items.erase(it);
- break;
- }
- }
-
//"dirty" - also means a difference in linked UUIDs and/or a difference in wearables order (links' descriptions)
std::sort(cof_items.begin(), cof_items.end(), sort_by_linked_uuid);
std::sort(outfit_items.begin(), outfit_items.end(), sort_by_linked_uuid);
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 3275d784a3..99156b9d9d 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -211,7 +211,7 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name)
{
LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL;
- LLAvalineListItem* item = new LLAvalineListItem;
+ LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false);
item->setAvatarId(item_id, session_id, true, false);
item->setName(item_name);
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 6897f4ee8e..2826899cb0 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -1886,7 +1886,7 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data)
if("end" == action)
{
- LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
+ LLScriptFloaterManager::instance().removeNotification(getSessionId());
}
}
@@ -1969,7 +1969,7 @@ void LLInvOfferChiclet::onMenuItemClicked(const LLSD& user_data)
if("end" == action)
{
- LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
+ LLScriptFloaterManager::instance().removeNotification(getSessionId());
}
}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 55eb543f5f..3944fa53c9 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -262,6 +262,7 @@ public:
BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; }
BOOL needsAutoRename() { return mNeedsAutoRename; }
void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; }
+ void setAutoSelectOverride(BOOL val) { mAutoSelectOverride = val; }
void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; }
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index a2b72e7d74..21313f9df7 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1022,6 +1022,14 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
}
else
{
+ // IM_SESSION_INVITE means that this is an Ad-hoc incoming chat
+ // (it can be also Group chat but it is checked above)
+ // In this case mInitialTargetIDs contains Ad-hoc session ID and it should not be added
+ // to Recent People to prevent showing of an item with (???)(???). See EXT-8246.
+ // Concrete participants will be added into this list once they sent message in chat.
+ if (IM_SESSION_INVITE == dialog) return;
+
+ // implemented adding of all participants of an outgoing to Recent People List. See EXT-5694.
for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
it!=session->mInitialTargetIDs.end();++it)
{
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 2d11337955..f20acbd016 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -507,6 +507,19 @@ bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
return TRUE;
}
+bool LLIsOfAssetType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+ if(mType == LLAssetType::AT_CATEGORY)
+ {
+ if(cat) return TRUE;
+ }
+ if(item)
+ {
+ if(item->getActualType() == mType) return TRUE;
+ }
+ return FALSE;
+}
+
bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index a6d7fcd956..4a7721098d 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -174,6 +174,25 @@ protected:
LLAssetType::EType mType;
};
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLIsOfAssetType
+//
+// Implementation of a LLInventoryCollectFunctor which returns TRUE if
+// the item or category is of asset type passed in during construction.
+// Link types are treated as links, not as the types they point to.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLIsOfAssetType : public LLInventoryCollectFunctor
+{
+public:
+ LLIsOfAssetType(LLAssetType::EType type) : mType(type) {}
+ virtual ~LLIsOfAssetType() {}
+ virtual bool operator()(LLInventoryCategory* cat,
+ LLInventoryItem* item);
+protected:
+ LLAssetType::EType mType;
+};
+
class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
{
public:
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index b8590d838e..46ebb54786 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -1052,7 +1052,7 @@ void LLLocationInputCtrl::changeLocationPresentation()
//needs unescaped one
LLSLURL slurl;
LLAgentUI::buildSLURL(slurl, false);
- mTextEntry->setText(slurl.getSLURLString());
+ mTextEntry->setText(LLURI::unescape(slurl.getSLURLString()));
mTextEntry->selectAll();
mMaturityButton->setVisible(FALSE);
diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp
index e0658554a4..8ba2e6d01c 100644
--- a/indra/newview/llpanelgenerictip.cpp
+++ b/indra/newview/llpanelgenerictip.cpp
@@ -35,6 +35,7 @@
#include "llpanelgenerictip.h"
#include "llnotifications.h"
+#include "llviewercontrol.h" // for gSavedSettings
LLPanelGenericTip::LLPanelGenericTip(
@@ -45,7 +46,8 @@ LLPanelGenericTip::LLPanelGenericTip(
childSetValue("message", notification->getMessage());
- // set line max count to 3 in case of a very long name
- snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
+
+ S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
+ snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
}
diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp
index 6ba015b11c..b21fd7d385 100644
--- a/indra/newview/llpanelonlinestatus.cpp
+++ b/indra/newview/llpanelonlinestatus.cpp
@@ -34,6 +34,7 @@
#include "llnotifications.h"
#include "llpanelonlinestatus.h"
+#include "llviewercontrol.h" // for gSavedSettings
LLPanelOnlineStatus::LLPanelOnlineStatus(
const LLNotificationPtr& notification) :
@@ -54,7 +55,7 @@ LLPanelOnlineStatus::LLPanelOnlineStatus(
notification, notification->getResponseTemplate()));
}
- // set line max count to 3 in case of a very long name
- snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
+ S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
+ snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
}
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 8fe78a0f81..f2e6969998 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -582,7 +582,7 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)
else
{
std::string display_name = LLVoiceClient::getInstance()->getDisplayName(avatar_id);
- mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? display_name : LLTrans::getString("AvatarNameWaiting"));
+ mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? LLTrans::getString("AvatarNameWaiting") : display_name);
mAvalineUpdater->watchAvalineCaller(avatar_id);
}
adjustParticipant(avatar_id);
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index b68fc3b002..75797dae81 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -176,7 +176,15 @@ void LLScriptFloater::onClose(bool app_quitting)
if(getNotificationId().notNull())
{
- LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
+ // we shouldn't kill notification on exit since it may be used as persistent.
+ if (app_quitting)
+ {
+ LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
+ }
+ else
+ {
+ LLScriptFloaterManager::getInstance()->removeNotification(getNotificationId());
+ }
}
}
@@ -352,7 +360,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
set_new_message |= !floater->hasFocus();
}
- onRemoveNotification(it->first);
+ removeNotification(it->first);
}
}
@@ -379,6 +387,17 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
toggleScriptFloater(notification_id, set_new_message);
}
+void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id)
+{
+ LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+ if (notification != NULL && !notification->isCancelled())
+ {
+ LLNotificationsUtil::cancel(notification);
+ }
+
+ onRemoveNotification(notification_id);
+}
+
void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
{
if(notification_id.isNull())
@@ -392,6 +411,8 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
+ mNotifications.erase(notification_id);
+
// close floater
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
if(floater)
@@ -400,8 +421,6 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
floater->setNotificationId(LLUUID::null);
floater->closeFloater();
}
-
- mNotifications.erase(notification_id);
}
void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message)
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index dc0cfc2400..6990234fd7 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -65,6 +65,11 @@ public:
void onAddNotification(const LLUUID& notification_id);
/**
+ * Removes notification.
+ */
+ void removeNotification(const LLUUID& notification_id);
+
+ /**
* Handles notification removal.
* Removes script notification toast, removes script chiclet, closes script floater
*/
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index e6b4aeb6c2..1a8c2b8fc0 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -371,7 +371,7 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel()
//---------------------------------------------------------------------------------
void LLIMWellWindow::ObjectRowPanel::onClosePanel()
{
- LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId());
+ LLScriptFloaterManager::getInstance()->removeNotification(mChiclet->getSessionId());
}
void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/)
@@ -832,7 +832,7 @@ void LLIMWellWindow::closeAllImpl()
ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
if (obj_panel)
{
- LLScriptFloaterManager::instance().onRemoveNotification(*iter);
+ LLScriptFloaterManager::instance().removeNotification(*iter);
}
}
}
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index fcb9deb20b..0b02861b75 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -423,6 +423,10 @@ BOOL LLFloaterTexturePicker::postBuild()
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryPanel->setAllowMultiSelect(FALSE);
+ // Disable auto selecting first filtered item because it takes away
+ // selection from the item set by LLTextureCtrl owning this floater.
+ mInventoryPanel->getRootFolder()->setAutoSelectOverride(TRUE);
+
// Commented out to scroll to currently selected texture. See EXT-5403.
// // store this filter as the default one
// mInventoryPanel->getRootFolder()->getFilter()->markDefault();
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
index 8488527185..333f682e8f 100644
--- a/indra/newview/llurllineeditorctrl.cpp
+++ b/indra/newview/llurllineeditorctrl.cpp
@@ -89,9 +89,10 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length));
LLWString text_to_copy;
- if (LLSLURL(unescaped_text).isValid())
+ // *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335).
+ if (LLStringUtil::startsWith(unescaped_text, "http://")) // SLURL
text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
- else
+ else // human-readable location
text_to_copy = utf8str_to_wstring(unescaped_text);
gClipboard.copyFromString( text_to_copy );
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
index 5ad099e2d9..ae98abf4fb 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -50,8 +50,13 @@
function="File.UploadBulk"
parameter="" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_call
+ label="Set Default Upload Permissions"
+ name="perm prefs">
+ <menu_item_call.on_click
+ function="Floater.Toggle"
+ parameter="perm_prefs" />
+ </menu_item_call>
</menu>
<menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 3557318705..63ff7047b4 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -707,13 +707,6 @@
label="Options"
name="Options"
tear_off="true">
- <menu_item_call
- label="Set Default Upload Permissions"
- name="perm prefs">
- <menu_item_call.on_click
- function="Floater.Toggle"
- parameter="perm_prefs" />
- </menu_item_call>
<menu_item_check
label="Show Advanced Permissions"
name="DebugPermissions">
@@ -873,8 +866,13 @@
function="File.UploadBulk"
parameter="" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_call
+ label="Set Default Upload Permissions"
+ name="perm prefs">
+ <menu_item_call.on_click
+ function="Floater.Toggle"
+ parameter="perm_prefs" />
+ </menu_item_call>
</menu>
</menu>
<menu
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
index d8675b3512..584ca8b3b5 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -104,6 +104,7 @@
follows="top|left"
font="SansSerif"
left="10"
+ name="nearby_media_title"
width="100">
Nearby Media
</text>
@@ -114,6 +115,7 @@
font="SansSerif"
top_pad="15"
left="10"
+ name="show_text"
width="40">
Show:
</text>
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 b43aa0a824..d18f0d57ca 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -14,9 +14,9 @@
background_visible="true"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- no_matched_tabs_text.value="NoOutfitsTabsMatched"
+ 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="NoOutfits"
+ no_visible_tabs_text.value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]"
follows="all"
height="400"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 0c31fda68b..b91acbe27d 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1956,6 +1956,9 @@ Clears (deletes) the media and all params from the given face.
<string name="InvFolder Animations">Animations</string>
<string name="InvFolder Gestures">Gestures</string>
<string name="InvFolder Favorite">Favorites</string>
+ <!-- historically default name of the Favorites folder can start from either "f" or "F" letter.
+ We should localize both of them with the same value -->
+ <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>
@@ -2194,10 +2197,6 @@ Clears (deletes) the media and all params from the given face.
<!-- panel preferences general -->
<string name="BusyModeResponseDefault">The Resident you messaged is in &apos;busy mode&apos; which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing.</string>
- <!-- Outfits Panel -->
- <string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string>
- <string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string>
-
<!-- Mute -->
<string name="MuteByName">(By name)</string>
<string name="MuteAgent">(Resident)</string>