diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index deb25c74c..66a0f0278 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -178,7 +178,7 @@ BOOL LLInventoryObject::importLegacyStream(std::istream& input_stream)
while(input_stream.good())
{
input_stream.getline(buffer, MAX_STRING);
- sscanf(buffer, " %254s %254s", keyword, valuestr); /* Flawfinder: ignore */
+ if (sscanf(buffer, " %254s %254s", keyword, valuestr) < 1) continue;
if(0 == strcmp("{",keyword))
{
continue;
@@ -610,7 +610,7 @@ BOOL LLInventoryItem::importFile(LLFILE* fp)
buffer[0] = '\0';
}
- sscanf(buffer, " %254s %254s", keyword, valuestr); /* Flawfinder: ignore */
+ if (sscanf(buffer, " %254s %254s", keyword, valuestr) < 1) continue;
if(0 == strcmp("{",keyword))
{
continue;
@@ -813,10 +813,10 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream)
while(success && input_stream.good())
{
input_stream.getline(buffer, MAX_STRING);
- sscanf( /* Flawfinder: ignore */
+ if (sscanf(
buffer,
" %254s %254s",
- keyword, valuestr);
+ keyword, valuestr) < 1) continue;
if(0 == strcmp("{",keyword))
{
continue;
@@ -1489,10 +1489,10 @@ BOOL LLInventoryCategory::importFile(LLFILE* fp)
buffer[0] = '\0';
}
- sscanf( /* Flawfinder: ignore */
+ if (sscanf(
buffer,
" %254s %254s",
- keyword, valuestr);
+ keyword, valuestr) < 1) continue;
if(0 == strcmp("{",keyword))
{
continue;
@@ -1568,10 +1568,10 @@ BOOL LLInventoryCategory::importLegacyStream(std::istream& input_stream)
while(input_stream.good())
{
input_stream.getline(buffer, MAX_STRING);
- sscanf( /* Flawfinder: ignore */
+ if (sscanf(
buffer,
" %254s %254s",
- keyword, valuestr);
+ keyword, valuestr) < 1) continue;
if(0 == strcmp("{",keyword))
{
continue;
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 38adb7dd0..b03111f7e 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -74,6 +74,11 @@ set(llrender_HEADER_FILES
set_source_files_properties(${llrender_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
+# Workaround hack for clang bugs
+if (DARWIN)
+ set_property(SOURCE llgl.cpp PROPERTY COMPILE_FLAGS -O1)
+endif (DARWIN)
+
list(APPEND llrender_SOURCE_FILES ${llrender_HEADER_FILES})
add_library (llrender ${llrender_SOURCE_FILES})
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 16fb57c25..c8be07f43 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -571,6 +571,9 @@ void LLFloater::open() /* Flawfinder: ignore */
setVisibleAndFrontmost(mAutoFocus);
}
+ if (!getControlName().empty())
+ setControlValue(true);
+
onOpen();
}
@@ -633,6 +636,9 @@ void LLFloater::close(bool app_quitting)
}
}
+ if (!app_quitting && !getControlName().empty())
+ setControlValue(false);
+
// Let floater do cleanup.
onClose(app_quitting);
}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 73f87037a..64861526c 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -253,10 +253,10 @@
Rect
Value
- 0
- 0
- 0
- 0
+ 30
+ 505
+ 580
+ 275
FloaterAvatarTextRect
@@ -6106,10 +6106,10 @@ This should be as low as possible, but too low may break functionality
Rect
Value
- 0
- 0
- 0
- 0
+ 30
+ 505
+ 580
+ 275
DestinationGuideShown
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index ec1c5acb3..d76a43566 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -257,6 +257,8 @@ LLFloaterLand::~LLFloaterLand()
// public
void LLFloaterLand::refresh()
{
+ if (LLViewerParcelMgr::getInstance()->selectionEmpty())
+ LLViewerParcelMgr::getInstance()->selectParcelAt(gAgent.getPositionGlobal());
mPanelGeneral->refresh();
mPanelObjects->refresh();
mPanelOptions->refresh();
diff --git a/indra/newview/llfloatermediafilter.cpp b/indra/newview/llfloatermediafilter.cpp
index 3384b05a9..3b636484b 100644
--- a/indra/newview/llfloatermediafilter.cpp
+++ b/indra/newview/llfloatermediafilter.cpp
@@ -74,7 +74,7 @@ void LLFloaterMediaFilter::updateLists(LLMediaFilter::EMediaList list_type)
{
bool white(list_type == LLMediaFilter::WHITELIST);
const LLMediaFilter& inst(LLMediaFilter::instance());
- LLMediaFilter::string_list_t list = white ? inst.getWhiteList() : inst.getBlackList();
+ const LLMediaFilter::string_list_t& list = white ? inst.getWhiteList() : inst.getBlackList();
LLScrollListCtrl* scroll(white ? mWhitelist : mBlacklist);
scroll->clearRows();
for (LLMediaFilter::string_list_t::const_iterator itr = list.begin(); itr != list.end(); ++itr)
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index a452d1368..403b04099 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -341,9 +341,15 @@ void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_vi
//////////////////////////////////////////////
// LLFloaterPreference
+void reset_to_default(const std::string& control)
+{
+ LLUI::getControlControlGroup(control).getControl(control)->resetToDefault(true);
+}
+
LLFloaterPreference::LLFloaterPreference()
{
mExitWithoutSaving = false;
+ mCommitCallbackRegistrar.add("Prefs.Reset", boost::bind(reset_to_default, _2));
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preferences.xml");
}
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index 1cae093dc..517266097 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -1358,8 +1358,10 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
{
S32 in_len = in_str.length();
+#ifdef MATCH_COMMON_CHARS
std::string rest_of_match = "";
std::string buf = "";
+#endif
item_map_t::iterator it;
for (it = mActive.begin(); it != mActive.end(); ++it)
{
@@ -1367,18 +1369,26 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
if (gesture)
{
const std::string& trigger = gesture->getTrigger();
+#ifdef MATCH_COMMON_CHARS
//return whole trigger, if received text equals to it
if (!LLStringUtil::compareInsensitive(in_str, trigger))
{
*out_str = trigger;
return TRUE;
}
+#else
+ if (in_len > (S32)trigger.length()) continue; // too short, bail out
+#endif
//return common chars, if more than one trigger matches the prefix
std::string trigger_trunc = trigger;
LLStringUtil::truncate(trigger_trunc, in_len);
if (!LLStringUtil::compareInsensitive(in_str, trigger_trunc))
{
+#ifndef MATCH_COMMON_CHARS
+ *out_str = trigger;
+ return TRUE;
+#else
if (rest_of_match.compare("") == 0)
{
rest_of_match = trigger.substr(in_str.size());
@@ -1411,16 +1421,18 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
{
rest_of_match = buf;
}
-
+#endif
}
}
}
+#ifdef MATCH_COMMON_CHARS
if (!rest_of_match.empty())
{
*out_str = in_str + rest_of_match;
return TRUE;
}
+#endif
return FALSE;
}
diff --git a/indra/newview/llmediafilter.cpp b/indra/newview/llmediafilter.cpp
index 9d5dacf1c..56d01e422 100644
--- a/indra/newview/llmediafilter.cpp
+++ b/indra/newview/llmediafilter.cpp
@@ -41,6 +41,10 @@ bool handle_media_filter_callback(const LLSD& notification, const LLSD& response
std::string extractDomain(const std::string& in_url);
LLMediaFilter::LLMediaFilter()
+: mMediaCommandQueue(0)
+, mCurrentParcel(NULL)
+, mMediaQueue(NULL)
+, mAlertActive(false)
{
loadMediaFilterFromDisk();
}
@@ -56,7 +60,7 @@ void LLMediaFilter::filterMediaUrl(LLParcel* parcel)
const std::string domain = extractDomain(url);
mCurrentParcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- U32 enabled = gSavedSettings.getU32("MediaFilterEnable");
+ U32 enabled = gSavedSettings.getU32("MediaFilterEnable");
if (enabled > 1 && (filter(domain, WHITELIST) || filter(url, WHITELIST)))
{
@@ -104,7 +108,7 @@ void LLMediaFilter::filterAudioUrl(const std::string& url)
const std::string domain = extractDomain(url);
mCurrentParcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- U32 enabled = gSavedSettings.getU32("MediaFilterEnable");
+ U32 enabled = gSavedSettings.getU32("MediaFilterEnable");
if (enabled > 1 && (filter(domain, WHITELIST) || filter(url, WHITELIST)))
{
@@ -141,7 +145,7 @@ void LLMediaFilter::filterAudioUrl(const std::string& url)
bool LLMediaFilter::filter(const std::string& url, EMediaList list)
{
- const string_list_t p_list = (list == WHITELIST) ? mWhiteList : mBlackList;
+ const string_list_t& p_list = (list == WHITELIST) ? mWhiteList : mBlackList;
string_list_t::const_iterator find_itr = std::find(p_list.begin(), p_list.end(), url);
return (find_itr != p_list.end());
}
@@ -149,60 +153,34 @@ bool LLMediaFilter::filter(const std::string& url, EMediaList list)
// List bizznizz
void LLMediaFilter::addToMediaList(const std::string& in_url, EMediaList list, bool extract)
{
- std::string url = extract ? extractDomain(in_url) : in_url;
+ const std::string url = extract ? extractDomain(in_url) : in_url;
if (url.empty())
{
LL_INFOS("MediaFilter") << "No url found. Can't add to list." << LL_ENDL;
return;
}
- switch (list)
+ string_list_t& p_list(list == WHITELIST ? mWhiteList : mBlackList);
+ // Check for duplicates
+ for (string_list_t::const_iterator itr = p_list.begin(); itr != p_list.end(); ++itr)
{
- case WHITELIST:
- // Check for duplicates
- for (string_list_t::const_iterator itr = mWhiteList.begin(); itr != mWhiteList.end(); ++itr)
- {
- if (url == *itr)
- {
- LL_INFOS("MediaFilter") << "URL " << url << " already in list!" << LL_ENDL;
- return;
- }
- }
- mWhiteList.push_back(url);
- mMediaListUpdate(WHITELIST);
- break;
- case BLACKLIST:
- for (string_list_t::const_iterator itr = mBlackList.begin(); itr != mBlackList.end(); ++itr)
- {
- if (url == *itr)
- {
- LL_INFOS("MediaFilter") << "URL " << url << "already in list!" << LL_ENDL;
- return;
- }
- }
- mBlackList.push_back(url);
- mMediaListUpdate(BLACKLIST);
- break;
+ if (url == *itr)
+ {
+ LL_INFOS("MediaFilter") << "URL " << url << " already in list!" << LL_ENDL;
+ return;
+ }
}
+ p_list.push_back(url);
+ mMediaListUpdate(list);
saveMediaFilterToDisk();
}
void LLMediaFilter::removeFromMediaList(string_vec_t domains, EMediaList list)
{
if (domains.empty()) return;
- switch (list)
- {
- case WHITELIST:
- for (string_vec_t::const_iterator itr = domains.begin(); itr != domains.end(); ++itr)
- mWhiteList.remove(*itr);
- mMediaListUpdate(WHITELIST);
- break;
- case BLACKLIST:
- for (string_vec_t::const_iterator itr = domains.begin(); itr != domains.end(); ++itr)
- mBlackList.remove(*itr);
- mMediaListUpdate(BLACKLIST);
- break;
- }
+ for (string_vec_t::const_iterator itr = domains.begin(); itr != domains.end(); ++itr)
+ (list == WHITELIST ? mWhiteList : mBlackList).remove(*itr);
+ mMediaListUpdate(list);
saveMediaFilterToDisk();
}
@@ -242,25 +220,24 @@ void LLMediaFilter::loadMediaFilterFromDisk()
}
}
+void medialist_to_llsd(const LLMediaFilter::string_list_t& list, LLSD& list_llsd, const LLSD& action)
+{
+ for (LLMediaFilter::string_list_t::const_iterator itr = list.begin(); itr != list.end(); ++itr)
+ {
+ LLSD item;
+ item["domain"] = *itr;
+ item["action"] = action;
+ list_llsd.append(item);
+ }
+}
+
void LLMediaFilter::saveMediaFilterToDisk() const
{
const std::string medialist_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, MEDIALIST_XML);
LLSD medialist_llsd;
- for (string_list_t::const_iterator itr = mWhiteList.begin(); itr != mWhiteList.end(); ++itr)
- {
- LLSD item;
- item["domain"] = *itr;
- item["action"] = "allow"; // <- $*#@()&%@
- medialist_llsd.append(item);
- }
- for (string_list_t::const_iterator itr = mBlackList.begin(); itr != mBlackList.end(); ++itr)
- {
- LLSD item;
- item["domain"] = *itr;
- item["action"] = "deny"; // sigh.
- medialist_llsd.append(item);
- }
+ medialist_to_llsd(mWhiteList, medialist_llsd, "allow"); // <- $*#@()&%@
+ medialist_to_llsd(mBlackList, medialist_llsd, "deny"); // sigh.
llofstream medialist;
medialist.open(medialist_filename);
@@ -268,6 +245,30 @@ void LLMediaFilter::saveMediaFilterToDisk() const
medialist.close();
}
+void perform_queued_command(LLMediaFilter& inst)
+{
+ if (U32 command = inst.getQueuedMediaCommand())
+ {
+ if (command == PARCEL_MEDIA_COMMAND_STOP)
+ {
+ LLViewerParcelMedia::stop();
+ }
+ else if (command == PARCEL_MEDIA_COMMAND_PAUSE)
+ {
+ LLViewerParcelMedia::pause();
+ }
+ else if (command == PARCEL_MEDIA_COMMAND_UNLOAD)
+ {
+ LLViewerParcelMedia::stop();
+ }
+ else if (command == PARCEL_MEDIA_COMMAND_TIME)
+ {
+ LLViewerParcelMedia::seek(LLViewerParcelMedia::sMediaCommandTime);
+ }
+ inst.setQueuedMediaCommand(0);
+ }
+}
+
bool handle_audio_filter_callback(const LLSD& notification, const LLSD& response, const std::string& url)
{
LLMediaFilter& inst(LLMediaFilter::instance());
@@ -335,26 +336,9 @@ bool handle_audio_filter_callback(const LLSD& notification, const LLSD& response
if (queued_media)
inst.filterMediaUrl(queued_media);
}
- else if (inst.getQueuedMediaCommand())
+ else
{
- U32 command = inst.getQueuedMediaCommand();
- if (command == PARCEL_MEDIA_COMMAND_STOP)
- {
- LLViewerParcelMedia::stop();
- }
- else if (command == PARCEL_MEDIA_COMMAND_PAUSE)
- {
- LLViewerParcelMedia::pause();
- }
- else if (command == PARCEL_MEDIA_COMMAND_UNLOAD)
- {
- LLViewerParcelMedia::stop();
- }
- else if (command == PARCEL_MEDIA_COMMAND_TIME)
- {
- LLViewerParcelMedia::seek(LLViewerParcelMedia::sMediaCommandTime);
- }
- inst.setQueuedMediaCommand(0);
+ perform_queued_command(inst);
}
return false;
@@ -365,7 +349,7 @@ bool handle_media_filter_callback(const LLSD& notification, const LLSD& response
LLMediaFilter& inst(LLMediaFilter::instance());
inst.setAlertStatus(false);
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- const std::string url = notification["payload"].asString();
+ const std::string& url = notification["payload"].asString();
LLParcel* queue = inst.getQueuedMedia();
switch(option)
{
@@ -403,26 +387,9 @@ bool handle_media_filter_callback(const LLSD& notification, const LLSD& response
inst.clearQueuedAudio();
inst.filterAudioUrl(audio_queue);
}
- else if (inst.getQueuedMediaCommand())
+ else
{
- U32 command = inst.getQueuedMediaCommand();
- if (command == PARCEL_MEDIA_COMMAND_STOP)
- {
- LLViewerParcelMedia::stop();
- }
- else if (command == PARCEL_MEDIA_COMMAND_PAUSE)
- {
- LLViewerParcelMedia::pause();
- }
- else if (command == PARCEL_MEDIA_COMMAND_UNLOAD)
- {
- LLViewerParcelMedia::stop();
- }
- else if (command == PARCEL_MEDIA_COMMAND_TIME)
- {
- LLViewerParcelMedia::seek(LLViewerParcelMedia::sMediaCommandTime);
- }
- inst.setQueuedMediaCommand(0);
+ perform_queued_command(inst);
}
return false;
@@ -437,7 +404,7 @@ std::string extractDomain(const std::string& in_url)
if (pos != std::string::npos)
{
- S32 count = url.size()-pos+2;
+ size_t count = url.size()-pos+2;
url = url.substr(pos+2, count);
}
@@ -455,7 +422,7 @@ std::string extractDomain(const std::string& in_url)
if (pos != std::string::npos)
{
- S32 count = url.size()-pos+1;
+ size_t count = url.size()-pos+1;
url = url.substr(pos+1, count);
}
@@ -471,6 +438,6 @@ std::string extractDomain(const std::string& in_url)
// Now map the whole thing to lowercase, since domain names aren't
// case sensitive.
- std::transform(url.begin(), url.end(),url.begin(), ::tolower);
+ std::transform(url.begin(), url.end(), url.begin(), ::tolower);
return url;
}
diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp
index 43ebbcc34..1d4e23ded 100644
--- a/indra/newview/llpaneldisplay.cpp
+++ b/indra/newview/llpaneldisplay.cpp
@@ -97,8 +97,22 @@ const F32 MIN_USER_FAR_CLIP = 64.f;
const S32 ASPECT_RATIO_STR_LEN = 100;
+void reset_to_default(const std::string& control);
+void reset_all_to_default(const LLView* panel)
+{
+ LLView::child_list_const_iter_t end(panel->endChild());
+ for (LLView::child_list_const_iter_t i = panel->beginChild(); i != end; ++i)
+ {
+ const std::string& control_name((*i)->getControlName());
+ if (control_name.empty()) continue;
+ if (control_name == "RenderDepthOfField") continue; // Don't touch render settings *sigh* hack
+ reset_to_default(control_name);
+ }
+}
+
LLPanelDisplay::LLPanelDisplay()
{
+ mCommitCallbackRegistrar.add("Graphics.ResetTab", boost::bind(reset_all_to_default, boost::bind(&LLView::getChildView, this, _2, true, false)));
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_graphics1.xml");
}
diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
index 74c591f1e..40e450dd7 100644
--- a/indra/newview/llpanelgroupnotices.cpp
+++ b/indra/newview/llpanelgroupnotices.cpp
@@ -53,6 +53,7 @@
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "lltextbox.h"
+#include "lltrans.h"
#include "roles_constants.h"
#include "llviewerwindow.h"
@@ -511,6 +512,7 @@ void LLPanelGroupNotices::onSelectNotice()
lldebugs << "Item " << item->getUUID() << " selected." << llendl;
}
+bool is_openable(LLAssetType::EType type);
void LLPanelGroupNotices::showNotice(const std::string& subject,
const std::string& message,
const bool& has_inventory,
@@ -549,6 +551,7 @@ void LLPanelGroupNotices::showNotice(const std::string& subject,
mViewInventoryName->setText(ss.str());
mBtnOpenAttachment->setEnabled(TRUE);
+ mBtnOpenAttachment->setLabel(LLTrans::getString(is_openable(inventory_offer->mType) ? "GroupNotifyOpenAttachment" : "GroupNotifySaveAttachment"));
}
else
{
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index e66bad4eb..d9afd5b04 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -3048,7 +3048,7 @@ void LLPanelGroupBanListSubTab::populateBanList()
ban_entry.columns.add().column("name").font/*.name*/("SANSSERIF_SMALL").font_style("NORMAL");
// Singu Note: We have special date columns, so our code is unique here
- ban_entry.columns.add().column("ban_date").value(bd.mBanDate).format("%Y/%m%d").font/*.name*/("SANSSERIF_SMALL").font_style("NORMAL");
+ ban_entry.columns.add().column("ban_date").value(bd.mBanDate).type("date").format("%Y/%m%d").font/*.name*/("SANSSERIF_SMALL").font_style("NORMAL");
mBanList->addNameItemRow(ban_entry);
}
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index c1ea44d7a..dfcee38e7 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -1604,7 +1604,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
transfer = TRUE;
}
BOOL volume = (LL_PCODE_VOLUME == obj->getPCode());
- BOOL attached = obj->isAttachment();
+ BOOL attached = false; // No longer necessary.
BOOL unrestricted = ((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) ? TRUE : FALSE;
// [RLVa:KB] - Checked: 2010-03-31 (RLVa-1.2.0c) | Modified: RLVa-1.0.0c
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 7faea5f98..9ea0c19d5 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -2903,7 +2903,7 @@ BOOL LLViewerObject::loadTaskInvFile(const std::string& filename)
while(ifs.good())
{
ifs.getline(buffer, MAX_STRING);
- sscanf(buffer, " %254s", keyword); /* Flawfinder: ignore */
+ if (sscanf(buffer, " %254s", keyword) < 1) continue;
if(0 == strcmp("inv_item", keyword))
{
LLPointer inv = new LLViewerInventoryItem;
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 4841e56e3..ff86604f5 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -95,7 +95,6 @@
-
@@ -259,7 +258,7 @@
-
+
+
+
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml
index b5891495b..a00161142 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml
@@ -14,6 +14,7 @@
+