diff --git a/autobuild.xml b/autobuild.xml
index 5a5d70e85f..77bbbb4c9a 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -724,9 +724,9 @@
archive
name
darwin64
@@ -736,9 +736,9 @@
archive
name
linux64
@@ -748,9 +748,9 @@
archive
name
windows
@@ -760,9 +760,9 @@
archive
name
windows64
@@ -2975,7 +2975,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
http://3p.firestormviewer.org/threejs-0.132.2-linux64-213500940.tar.bz2
name
- darwin64
+ linux64
darwin64
- BasicUITooltips
-
ShowHoverTips
+ 360QualitySelection
+
MFAHash
+ FSNotecardFontName
+
+ FSNotecardFontSize
+
FSEnableRightclickOnTransparentObjects
+ FSUseCoRoFor360Capture
+
diff --git a/indra/newview/chatbar_as_cmdline.cpp b/indra/newview/chatbar_as_cmdline.cpp
index 7181c9dddd..c2c57bc14d 100644
--- a/indra/newview/chatbar_as_cmdline.cpp
+++ b/indra/newview/chatbar_as_cmdline.cpp
@@ -72,9 +72,9 @@ std::string cmd_line_mPackagerTargetFolderName;
LLUUID cmd_line_mPackagerTargetFolder;
LLUUID cmd_line_mPackagerDest;
-LLViewerInventoryItem::item_array_t findInventoryInFolder(const std::string& ifolder)
+LLViewerInventoryItem::item_array_t findInventoryInFolder(std::string_view ifolder)
{
- LLUUID folder = gInventory.findCategoryByName(ifolder);
+ LLUUID folder = gInventory.findCategoryByName(static_cast(ifolder));
LLViewerInventoryCategory::cat_array_t cats;
LLViewerInventoryItem::item_array_t items;
gInventory.collectDescendents(folder, cats, items, FALSE);
@@ -88,14 +88,15 @@ class JCZdrop : public LLEventTimer
public:
BOOL mRunning;
- JCZdrop(std::stack stack, LLUUID dest, std::string sFolder, std::string sUUID, bool package = false) : LLEventTimer(1.f), mRunning(FALSE)
- {
- mPackage = package;
- mStack = stack;
- mDestination = dest;
- mFolderName = sFolder;
- mDropUUID = sUUID;
- }
+ JCZdrop(std::stack stack, LLUUID dest, std::string_view sFolder, std::string_view sUUID, bool package = false)
+ : LLEventTimer(1.f),
+ mRunning(FALSE),
+ mPackage(package),
+ mStack(stack),
+ mDestination(dest),
+ mFolderName(sFolder),
+ mDropUUID(sUUID)
+ { }
~JCZdrop()
{
@@ -129,7 +130,7 @@ public:
LLViewerObject* objectp = gObjectList.findObject(mDestination);
if (objectp)
{
- report_to_nearby_chat(std::string("transferring ") + subj->getName());
+ report_to_nearby_chat(std::string("Transferring ") + subj->getName());
LLToolDragAndDrop::dropInventory(objectp, subj, LLToolDragAndDrop::SOURCE_AGENT, gAgentID);
if (mStack.size() > 0)
{
@@ -137,7 +138,7 @@ public:
}
else
{
- return (mStack.size() == 0);
+ return (mStack.empty());
}
}
else
@@ -156,7 +157,7 @@ private:
bool mPackage;
};
-JCZdrop* zdrop;
+JCZdrop* gZDrop{ nullptr };
class ZdCleanup: public LLEventTimer
{
@@ -168,7 +169,7 @@ public:
BOOL tick()
{
- zdrop = NULL;
+ gZDrop = nullptr;
return TRUE;
}
};
@@ -193,7 +194,7 @@ class JCZtake : public LLEventTimer
public:
BOOL mRunning;
- JCZtake(const LLUUID& target, bool package = false, LLUUID destination = LLUUID::null, std::string dtarget = "", EDeRezDestination dest = DRD_TAKE_INTO_AGENT_INVENTORY, bool use_selection = true, std::vector to_take = std::vector()) :
+ JCZtake(const LLUUID& target, bool package = false, const LLUUID& destination = LLUUID::null, std::string_view dtarget = "", EDeRezDestination dest = DRD_TAKE_INTO_AGENT_INVENTORY, bool use_selection = true, std::vector to_take = std::vector()) :
LLEventTimer(0.66f),
mTarget(target),
mRunning(FALSE),
@@ -255,11 +256,14 @@ public:
mToTake.push_back(localid);
}
}
- if (mToTake.size() > 0) mState = ZTS_TAKE;
+ if (!mToTake.empty())
+ {
+ mState = ZTS_TAKE;
+ }
break;
case ZTS_TAKE:
- if (mToTake.size() > 0)
+ if (!mToTake.empty())
{
std::vector > inventory = findInventoryInFolder(mFolderName);
mPackSize = mToTake.size() + inventory.size();
@@ -285,7 +289,7 @@ public:
if (mToTake.size() % 10 == 0)
{
- if (mToTake.size() == 0)
+ if (mToTake.empty())
{
if (mPackage)
{
@@ -348,7 +352,8 @@ public:
if (itemstack.size() >= mPackSize || mCountdown == 0)
{
- if (itemstack.size() < mPackSize) {
+ if (itemstack.size() < mPackSize)
+ {
report_to_nearby_chat("Phase 1 of the packager finished, but some items mave have been missed.");
}
else
@@ -358,8 +363,8 @@ public:
report_to_nearby_chat("Do not have the destination prim selected while transfer is running to reduce the chances of \"Inventory creation on in-world object failed.\"");
- LLUUID sdest = LLUUID(mPackageDest);
- new JCZdrop(itemstack, sdest, mFolderName.c_str(), mPackageDest.asString().c_str(), true);
+ LLUUID sdest{ mPackageDest };
+ gZDrop = new JCZdrop(itemstack, sdest, mFolderName.c_str(), mPackageDest.asString().c_str(), true);
doZtCleanup();
mState = ZTS_DONE;
@@ -388,7 +393,7 @@ private:
EZtakeState mState;
};
-JCZtake* ztake;
+JCZtake* gZTake{ nullptr };
class LOZtCleanup: public LLEventTimer
{
@@ -400,9 +405,9 @@ public:
BOOL tick()
{
- ztake->mRunning = TRUE;
- delete ztake;
- ztake = NULL;
+ gZTake->mRunning = TRUE;
+ delete gZTake;
+ gZTake = nullptr;
return TRUE;
}
};
@@ -470,7 +475,7 @@ public:
{
report_to_nearby_chat(llformat("%i...", mCountdown--));
}
- else if (mToTake.size() > 0)
+ else if (!mToTake.empty())
{
msg->newMessageFast(_PREHASH_DeRezObject);
msg->nextBlockFast(_PREHASH_AgentData);
@@ -492,7 +497,7 @@ public:
if (mToTake.size() % 10 == 0)
{
- if (mToTake.size() == 0)
+ if (mToTake.empty())
{
report_to_nearby_chat("Mtake has taken all selected objects. Say \"mtake off\" to deactivate Mtake or select more objects to continue.");
}
@@ -515,7 +520,7 @@ private:
S32 zeroClearY;
S32 zeroClearZ;
};
-TMZtake* mtake;
+TMZtake* gMTake;
void invrepair()
{
@@ -534,7 +539,7 @@ void key_to_name_callback(const LLUUID& id, const LLAvatarName& av_name)
report_to_nearby_chat(llformat("%s: (%s)", id.asString().c_str(), name.c_str()));
}
-bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_gesture)
+bool cmd_line_chat(std::string_view revised_text, EChatType type, bool from_gesture)
{
static LLCachedControl sFSCmdLine(gSavedSettings, "FSCmdLine");
static LLCachedControl sFSCmdLinePos(gSavedSettings, "FSCmdLinePos");
@@ -556,12 +561,11 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
static LLCachedControl sFSCmdLineMusic(gSavedSettings, "FSCmdLineMusic");
static LLCachedControl sFSCmdLineCopyCam(gSavedSettings, "FSCmdLineCopyCam");
static LLCachedControl sFSCmdLineRollDice(gSavedSettings, "FSCmdLineRollDice");
- // FIRE-6340, FIRE-6567 - Setting Bandwidth issues
static LLCachedControl sFSCmdLineBandwidth(gSavedSettings, "FSCmdLineBandWidth");
if (sFSCmdLine)
{
- std::istringstream i(revised_text);
+ std::istringstream i(static_cast(revised_text));
std::string command;
i >> command;
if (!command.empty())
@@ -651,7 +655,6 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
return false;
}
}
- // FIRE-6340, FIRE-6567 - Setting Bandwidth issues
else if (command == sFSCmdLineBandwidth())
{
S32 band_width;
@@ -667,7 +670,6 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
return false;
}
}
- // FIRE-6340, FIRE-6567 - Setting Bandwidth issues
else if (command == sFSCmdLineAO())
{
std::string status;
@@ -936,7 +938,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
}
else
{
- region_name = LLWeb::escapeURL(revised_text.substr(command.length() + 1));
+ region_name = LLWeb::escapeURL(static_cast(revised_text.substr(command.length() + 1)));
LLVector3d agentPos = gAgent.getPositionGlobal();
agent_x = ll_round((F32)agentPos.mdV[VX]);
agent_y = ll_round((F32)agentPos.mdV[VY]);
@@ -961,7 +963,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
F32 result = 0.f;
if (revised_text.length() > command.length() + 1)
{
- std::string expr = revised_text.substr(command.length()+1);
+ std::string expr = static_cast(revised_text.substr(command.length() + 1));
LLStringUtil::toUpper(expr);
std::string original_expr = expr;
@@ -1024,7 +1026,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
{
if (revised_text.length() > command.length() + 1) //Typing this command with no argument was causing a crash. -Madgeek
{
- std::string name = revised_text.substr(command.length() + 1);
+ std::string_view name = revised_text.substr(command.length() + 1);
cmdline_tp2name(name);
}
return false;
@@ -1047,7 +1049,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
{
if (setting == "on")
{
- if (zdrop)
+ if (gZDrop)
{
report_to_nearby_chat("Zdrop is already active.");
}
@@ -1083,12 +1085,11 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
report_to_nearby_chat("Verifying folder location...");
std::stack inventorystack;
std::vector > inventory = findInventoryInFolder(folder);
- for (std::vector >::iterator it = inventory.begin(); it != inventory.end(); ++it)
+ for (const auto& item : inventory)
{
- LLViewerInventoryItem* item = *it;
- inventorystack.push(item);
+ inventorystack.emplace(item);
}
- if (inventorystack.size())
+ if (!inventorystack.empty())
{
report_to_nearby_chat(llformat("Found folder \"%s\".", folder.c_str()));
report_to_nearby_chat(llformat("Found prim \"%s\".", destination.c_str()));
@@ -1097,7 +1098,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
report_to_nearby_chat("Do not have the prim selected while transfer is running to reduce the chances of \"Inventory creation on in-world object failed.\"");
report_to_nearby_chat("Use \"zdrop off\" to stop the transfer");
LLUUID sdest = LLUUID(destination);
- zdrop = new JCZdrop(inventorystack, sdest, folder.c_str(), destination.c_str());
+ gZDrop = new JCZdrop(inventorystack, sdest, folder.c_str(), destination.c_str());
}
}
else
@@ -1121,15 +1122,15 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
}
else if (setting == "off")
{
- if (!zdrop)
+ if (!gZDrop)
{
report_to_nearby_chat("Zdrop is already deactivated.");
}
else
{
- zdrop ->mRunning = TRUE;
- delete zdrop;
- zdrop = NULL;
+ gZDrop->mRunning = TRUE;
+ delete gZDrop;
+ gZDrop = nullptr;
}
}
else
@@ -1151,7 +1152,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
{
if (setting == "on")
{
- if (ztake)
+ if (gZTake)
{
report_to_nearby_chat("Ztake is already active.");
}
@@ -1172,7 +1173,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
if (folder.notNull())
{
report_to_nearby_chat(llformat("Found destination folder \"%s\".", folder_name.c_str()));
- ztake = new JCZtake(folder);
+ gZTake = new JCZtake(folder);
}
else
{
@@ -1188,15 +1189,15 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
}
else if (setting == "off")
{
- if (!ztake)
+ if (!gZTake)
{
report_to_nearby_chat("Ztake is already deactivated.");
}
else
{
- ztake->mRunning = TRUE;
- delete ztake;
- ztake = NULL;
+ gZTake->mRunning = TRUE;
+ delete gZTake;
+ gZTake = nullptr;
}
}
else
@@ -1241,7 +1242,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
if (folder.notNull())
{
report_to_nearby_chat(llformat("Found destination folder \"%s\".", folder_name.c_str()));
- ztake = new JCZtake(folder, true, LLUUID(destination), folder_name, (command == "cpackage") ? DRD_ACQUIRE_TO_AGENT_INVENTORY : DRD_TAKE_INTO_AGENT_INVENTORY);
+ gZTake = new JCZtake(folder, true, LLUUID(destination), folder_name, (command == "cpackage") ? DRD_ACQUIRE_TO_AGENT_INVENTORY : DRD_TAKE_INTO_AGENT_INVENTORY);
}
else
{
@@ -1307,7 +1308,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
U32 localid = objectp->getLocalID();
if (std::find(to_take.begin(), to_take.end(), localid) == to_take.end())
{
- to_take.push_back(localid);
+ to_take.emplace_back(localid);
}
}
}
@@ -1320,7 +1321,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
else
{
report_to_nearby_chat(llformat("Found destination folder \"%s\".", folder_name.c_str()));
- ztake = new JCZtake(folder, true, LLUUID(destination), folder_name, DRD_ACQUIRE_TO_AGENT_INVENTORY, false, to_take);
+ gZTake = new JCZtake(folder, true, LLUUID(destination), folder_name, DRD_ACQUIRE_TO_AGENT_INVENTORY, false, to_take);
}
}
else
@@ -1438,7 +1439,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
U32 localid = objectp->getLocalID();
if (std::find(to_take.begin(), to_take.end(), localid) == to_take.end())
{
- to_take.push_back(localid);
+ to_take.emplace_back(localid);
}
}
}
@@ -1451,7 +1452,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
else
{
report_to_nearby_chat(llformat("Found destination folder \"%s\".", folder_name.c_str()));
- ztake = new JCZtake(folder, true, LLUUID::null, folder_name, (command == "kcopy") ? DRD_ACQUIRE_TO_AGENT_INVENTORY : DRD_TAKE_INTO_AGENT_INVENTORY, false, to_take);
+ gZTake = new JCZtake(folder, true, LLUUID::null, folder_name, (command == "kcopy") ? DRD_ACQUIRE_TO_AGENT_INVENTORY : DRD_TAKE_INTO_AGENT_INVENTORY, false, to_take);
}
}
else
@@ -1474,7 +1475,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
{
if (setting == "on")
{
- if (mtake)
+ if (gMTake)
{
report_to_nearby_chat("Mtake is already active.");
}
@@ -1495,7 +1496,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
if (folder.notNull())
{
report_to_nearby_chat(llformat("Found destination folder \"%s\".", folder_name.c_str()));
- mtake = new TMZtake(folder);
+ gMTake = new TMZtake(folder);
}
else
{
@@ -1511,15 +1512,15 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
}
else if (setting == "off")
{
- if (!mtake)
+ if (!gMTake)
{
report_to_nearby_chat("Mtake is already deactivated.");
}
else
{
- mtake->mRunning = TRUE;
- delete mtake;
- mtake = NULL;
+ gMTake->mRunning = TRUE;
+ delete gMTake;
+ gMTake = nullptr;
}
}
else
@@ -1729,29 +1730,25 @@ LLUUID cmdline_partial_name2key(std::string partial_name)
LLStringUtil::toLower(partial_name);
LLStringUtil::replaceString(partial_name, ".", " ");
- FSRadar* radar = FSRadar::getInstance();
- if (radar)
+ FSRadar::entry_map_t radar_list = FSRadar::getInstance()->getRadarList();
+ FSRadar::entry_map_t::iterator it_end = radar_list.end();
+ for (const auto& [avid, entry] : radar_list)
{
- FSRadar::entry_map_t radar_list = radar->getRadarList();
- FSRadar::entry_map_t::iterator it_end = radar_list.end();
- for (FSRadar::entry_map_t::iterator it = radar_list.begin(); it != it_end; ++it)
- {
- FSRadarEntry* entry = it->second;
- av_name = entry->getUserName();
+ av_name = entry->getUserName();
- LLStringUtil::toLower(av_name);
- if (strstr(av_name.c_str(), partial_name.c_str()))
- {
- return entry->getId();
- }
+ LLStringUtil::toLower(av_name);
+ if (strstr(av_name.c_str(), partial_name.c_str()))
+ {
+ return entry->getId();
}
}
+
return LLUUID::null;
}
-void cmdline_tp2name(const std::string& target)
+void cmdline_tp2name(std::string_view target)
{
- LLUUID avkey = cmdline_partial_name2key(target);
+ LLUUID avkey = cmdline_partial_name2key(static_cast(target));
if (avkey.notNull() && avkey != gAgentID)
{
LLAvatarActions::teleportTo(avkey);
@@ -1822,17 +1819,17 @@ void cmdline_rezplat(bool use_saved_value, F32 visual_radius) //cmdline_rezplat(
msg->sendReliable(gAgent.getRegionHost());
}
-bool cmdline_packager(const std::string& message, const LLUUID& fromID, const LLUUID& ownerID)
+bool cmdline_packager(std::string_view message, const LLUUID& fromID, const LLUUID& ownerID)
{
if (message.empty() || cmd_line_mPackagerDest.isNull() || fromID != cmd_line_mPackagerDest)
{
return false;
}
- std::string cmd = message.substr(0, 12);
+ std::string_view cmd = message.substr(0, 12);
if (cmd == "kpackageradd") {
- std::string csv = message.substr(13, -1);
+ std::string_view csv = message.substr(13, -1);
std::string::size_type start = 0;
std::string::size_type comma = 0;
do
@@ -1863,13 +1860,13 @@ bool cmdline_packager(const std::string& message, const LLUUID& fromID, const LL
}
while(comma < csv.length());
- report_to_nearby_chat(llformat("Packager: adding objects: \"%s\"", csv.c_str()));
+ report_to_nearby_chat(llformat("Packager: adding objects: \"%s\"", static_cast(csv).c_str()));
return true;
}
else if (cmd == "kpackagerend") {
report_to_nearby_chat("Packager: finalizing.");
- ztake = new JCZtake(cmd_line_mPackagerTargetFolder, true, cmd_line_mPackagerDest, cmd_line_mPackagerTargetFolderName, DRD_ACQUIRE_TO_AGENT_INVENTORY, false, cmd_line_mPackagerToTake);
+ gZTake = new JCZtake(cmd_line_mPackagerTargetFolder, true, cmd_line_mPackagerDest, cmd_line_mPackagerTargetFolderName, DRD_ACQUIRE_TO_AGENT_INVENTORY, false, cmd_line_mPackagerToTake);
cmd_line_mPackagerToTake.clear();
cmd_line_mPackagerTargetFolderName = "";
cmd_line_mPackagerTargetFolder.setNull();
diff --git a/indra/newview/chatbar_as_cmdline.h b/indra/newview/chatbar_as_cmdline.h
index e233d77db9..b6ae8e4707 100644
--- a/indra/newview/chatbar_as_cmdline.h
+++ b/indra/newview/chatbar_as_cmdline.h
@@ -36,11 +36,11 @@
#include "llchat.h"
-bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_gesture = false);
+bool cmd_line_chat(std::string_view revised_text, EChatType type, bool from_gesture = false);
void cmdline_rezplat(bool use_saved_value = true, F32 visual_radius = 30.f);
-void cmdline_tp2name(const std::string& target);
+void cmdline_tp2name(std::string_view target);
LLUUID cmdline_partial_name2key(std::string name);
-bool cmdline_packager(const std::string& message, const LLUUID& fromID, const LLUUID& ownerID);
+bool cmdline_packager(std::string_view message, const LLUUID& fromID, const LLUUID& ownerID);
#endif // CHATBAR_AS_CMDLINE_H
diff --git a/indra/newview/fs_viewer_manifest.py b/indra/newview/fs_viewer_manifest.py
index 316ebb2a5f..d6666d0fef 100644
--- a/indra/newview/fs_viewer_manifest.py
+++ b/indra/newview/fs_viewer_manifest.py
@@ -3,6 +3,17 @@ import subprocess
import tarfile
class FSViewerManifest:
+ def fs_installer_basename(self):
+ substitution_strings = {
+ 'version' : '.'.join(self.args['version']),
+ 'version_short' : '.'.join(self.args['version'][:-1]),
+ 'version_dashes' : '-'.join(self.args['version']),
+ 'app_name':self.app_name(),
+ 'app_name_oneword':self.app_name_oneword()
+ }
+
+ return "Phoenix-%(app_name)s-%(version_dashes)s" % substitution_strings
+
def fs_is_opensim(self):
return self.args['viewer_flavor'] == 'oss' #Havok would be hvk
@@ -99,15 +110,13 @@ class FSViewerManifest:
except:
print("Cannot run pdbcopy, packaging private symbols")
- # Store windows symbols we want to keep for debugging in a tar file, this will be later compressed with xz (lzma)
- # Using tat+xz gives far superior compression than zip (~half the size of the zip archive).
- # Python3 natively supports tar+xz via mode 'w:xz'. But we're stuck with Python2 for now.
- symbolTar = tarfile.TarFile("%s/Phoenix_%s_%s_%s_pdbsymbols-windows-%d.tar" % (self.args['configuration'].lower(),
- self.fs_channel_legacy_oneword(),
- '-'.join(self.args['version']),
- self.args['viewer_flavor'],
- self.address_size),
- 'w')
+ tarName = "%s/Phoenix_%s_%s_%s_pdbsymbols-windows-%d.tar.xz" % (self.args['configuration'].lower(),
+ self.fs_channel_legacy_oneword(),
+ '-'.join(self.args['version']),
+ self.args['viewer_flavor'],
+ self.address_size)
+ # Store windows symbols we want to keep for debugging in a tar file.
+ symbolTar = tarfile.open( name=tarName, mode="w:xz")
symbolTar.add( "%s/Firestorm-bin.exe" % self.args['configuration'].lower(), "firestorm-bin.exe" )
symbolTar.add( "%s/build_data.json" % self.args['configuration'].lower(), "build_data.json" )
symbolTar.add( "%s/%s" % (self.args['configuration'].lower(),pdbName), pdbName )
diff --git a/indra/newview/fscommon.cpp b/indra/newview/fscommon.cpp
index f000dd3040..d5bb19e095 100644
--- a/indra/newview/fscommon.cpp
+++ b/indra/newview/fscommon.cpp
@@ -67,7 +67,7 @@ extern S32 gMaxAgentGroups;
S32 FSCommon::sObjectAddMsg = 0;
-void report_to_nearby_chat(const std::string& message)
+void report_to_nearby_chat(std::string_view message)
{
LLChat chat;
chat.mText = message;
@@ -81,16 +81,16 @@ std::string format_string(std::string text, const LLStringUtil::format_map_t& ar
return text;
}
-bool is_irc_me_prefix(const std::string& text)
+bool is_irc_me_prefix(std::string_view text)
{
- const std::string prefix = text.substr(0, 4);
+ const std::string_view prefix = text.substr(0, 4);
return (prefix == "/me " || prefix == "/me'");
}
-std::string unescape_name(const std::string& name)
+std::string unescape_name(std::string_view name)
{
// bugfix for SL-46920: preventing filenames that break stuff.
- char * curl_str = curl_unescape(name.c_str(), name.size());
+ char * curl_str = curl_unescape(name.data(), name.size()); // Calling data() should be ok here because we also pass the length
std::string unescaped_name(curl_str);
curl_free(curl_str);
curl_str = NULL;
diff --git a/indra/newview/fscommon.h b/indra/newview/fscommon.h
index a7d8d350d6..4653b1a402 100644
--- a/indra/newview/fscommon.h
+++ b/indra/newview/fscommon.h
@@ -37,10 +37,10 @@ class LLViewerParcelMgr;
const F64 AVATAR_UNKNOWN_Z_OFFSET = -1.0; // Const value for avatars at unknown height
const F32 AVATAR_UNKNOWN_RANGE = -1.f;
-void report_to_nearby_chat(const std::string& message);
+void report_to_nearby_chat(std::string_view message);
std::string format_string(std::string text, const LLStringUtil::format_map_t& args);
-bool is_irc_me_prefix(const std::string& text);
-std::string unescape_name(const std::string& name);
+bool is_irc_me_prefix(std::string_view text);
+std::string unescape_name(std::string_view name);
namespace FSCommon
{
diff --git a/indra/newview/fsfloaterpartialinventory.cpp b/indra/newview/fsfloaterpartialinventory.cpp
new file mode 100644
index 0000000000..c88bcca5d4
--- /dev/null
+++ b/indra/newview/fsfloaterpartialinventory.cpp
@@ -0,0 +1,70 @@
+/**
+ * @file fsfloaterpartialinventory.cpp
+ * @brief Displays the inventory underneath a particular starting folder
+ *
+ * $LicenseInfo:firstyear=2022&license=viewerlgpl$
+ * Phoenix Firestorm Viewer Source Code
+ * Copyright (c) 2022 Ansariel Hiller @ Second Life
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "fsfloaterpartialinventory.h"
+#include "llfiltereditor.h"
+#include "llinventorypanel.h"
+
+//=========================================================================
+
+//=========================================================================
+FSFloaterPartialInventory::FSFloaterPartialInventory(const LLSD& key) : LLFloater(key)
+{
+ mRootFolderId = key["start_folder_id"].asUUID();
+}
+
+FSFloaterPartialInventory::~FSFloaterPartialInventory()
+{
+}
+
+BOOL FSFloaterPartialInventory::postBuild()
+{
+ LLInventoryPanel::Params params;
+ params.start_folder.id(mRootFolderId);
+ params.follows.flags(FOLLOWS_ALL);
+ params.layout("topleft");
+ params.name("inv_panel");
+ mInventoryList = LLUICtrlFactory::create(params);
+
+ auto wrapper_panel = getChild("pnl_inv_wrap");
+ wrapper_panel->addChild(mInventoryList);
+ mInventoryList->reshape(wrapper_panel->getRect().getWidth(), wrapper_panel->getRect().getHeight());
+ mInventoryList->setOrigin(0, 0);
+
+ mFilterEdit = getChild("flt_search");
+ mFilterEdit->setCommitCallback([this](LLUICtrl*, const LLSD& param){ mInventoryList->setFilterSubString(param.asString()); });
+
+ return TRUE;
+}
+
+void FSFloaterPartialInventory::onOpen(const LLSD& key)
+{
+ LLStringUtil::format_map_t args;
+ args["FOLDERNAME"] = key["start_folder_name"].asString();
+ setTitle(getString("title", args));
+}
diff --git a/indra/newview/fsfloaterpartialinventory.h b/indra/newview/fsfloaterpartialinventory.h
new file mode 100644
index 0000000000..bc7c3255df
--- /dev/null
+++ b/indra/newview/fsfloaterpartialinventory.h
@@ -0,0 +1,50 @@
+/**
+ * @file fsfloaterpartialinventory.h
+ * @brief Displays the inventory underneath a particular starting folder
+ *
+ * $LicenseInfo:firstyear=2022&license=viewerlgpl$
+ * Phoenix Firestorm Viewer Source Code
+ * Copyright (c) 2022 Ansariel Hiller @ Second Life
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef FS_FLOATERPARTIALINVENTORY_H
+#define FS_FLOATERPARTIALINVENTORY_H
+
+#include "llfloater.h"
+
+class LLFilterEditor;
+class LLInventoryPanel;
+
+class FSFloaterPartialInventory : public LLFloater
+{
+public:
+ FSFloaterPartialInventory(const LLSD& key);
+ virtual ~FSFloaterPartialInventory();
+
+ BOOL postBuild() override;
+ void onOpen(const LLSD& key) override;
+
+private:
+ LLUUID mRootFolderId;
+ LLInventoryPanel* mInventoryList{ nullptr };
+ LLFilterEditor* mFilterEdit{ nullptr };
+};
+
+#endif
diff --git a/indra/newview/fsperfstats.cpp b/indra/newview/fsperfstats.cpp
index e53bdc19f2..9b283feb00 100644
--- a/indra/newview/fsperfstats.cpp
+++ b/indra/newview/fsperfstats.cpp
@@ -53,6 +53,8 @@ namespace FSPerfStats
U32 lastGlobalPrefChange{0};
std::mutex bufferToggleLock{};
+ F64 cpu_hertz{0.0};
+
Tunables tunables;
std::atomic StatsRecorder::writeBuffer{0};
@@ -136,6 +138,8 @@ namespace FSPerfStats
// create a queue
// create a thread to consume from the queue
tunables.initialiseFromSettings();
+ FSPerfStats::cpu_hertz = (F64)LLTrace::BlockTimer::countsPerSecond();
+
t.detach();
}
@@ -342,7 +346,7 @@ namespace FSPerfStats
}
// The frametime budget we have based on the target FPS selected
- auto target_frame_time_raw = (U64)llround((F64)LLTrace::BlockTimer::countsPerSecond()/(tunables.userTargetFPS==0?1:tunables.userTargetFPS));
+ auto target_frame_time_raw = (U64)llround(FSPerfStats::cpu_hertz/(tunables.userTargetFPS==0?1:tunables.userTargetFPS));
// LL_INFOS() << "Effective FPS(raw):" << tot_frame_time_raw << " Target:" << target_frame_time_raw << LL_ENDL;
auto inferredFPS{1000/(U32)std::max(raw_to_ms(tot_frame_time_raw),1.0)};
U32 settingsChangeFrequency{inferredFPS > 25?inferredFPS:25};
diff --git a/indra/newview/fsperfstats.h b/indra/newview/fsperfstats.h
index d690e0bcf2..2e610d08c0 100644
--- a/indra/newview/fsperfstats.h
+++ b/indra/newview/fsperfstats.h
@@ -76,6 +76,8 @@ namespace FSPerfStats
static constexpr U32 TUNE_AVATARS_ONLY{0};
static constexpr U32 TUNE_SCENE_AND_AVATARS{1};
+ extern F64 cpu_hertz;
+
extern std::atomic tunedAvatars;
extern std::atomic renderAvatarMaxART_ns;
extern bool belowTargetFPS;
@@ -491,9 +493,9 @@ namespace FSPerfStats
};
- inline double raw_to_ns(U64 raw) { return (static_cast(raw) * 1000000000.0) / (F64)LLTrace::BlockTimer::countsPerSecond(); };
- inline double raw_to_us(U64 raw) { return (static_cast(raw) * 1000000.0) / (F64)LLTrace::BlockTimer::countsPerSecond(); };
- inline double raw_to_ms(U64 raw) { return (static_cast(raw) * 1000.0) / (F64)LLTrace::BlockTimer::countsPerSecond(); };
+ inline double raw_to_ns(U64 raw) { return (static_cast(raw) * 1000000000.0) / FSPerfStats::cpu_hertz; };
+ inline double raw_to_us(U64 raw) { return (static_cast(raw) * 1000000.0) / FSPerfStats::cpu_hertz; };
+ inline double raw_to_ms(U64 raw) { return (static_cast(raw) * 1000.0) / FSPerfStats::cpu_hertz; };
using RecordSceneTime = RecordTime;
using RecordAvatarTime = RecordTime;
diff --git a/indra/newview/lggcontactsets.cpp b/indra/newview/lggcontactsets.cpp
index 4a1c76113f..f06f1b45a2 100644
--- a/indra/newview/lggcontactsets.cpp
+++ b/indra/newview/lggcontactsets.cpp
@@ -103,7 +103,7 @@ std::string LGGContactSets::getDefaultFilename()
return path;
}
-LLSD LGGContactSets::exportContactSet(const std::string& set_name)
+LLSD LGGContactSets::exportContactSet(std::string_view set_name)
{
LLSD ret;
@@ -113,9 +113,9 @@ LLSD LGGContactSets::exportContactSet(const std::string& set_name)
ret["groupname"] = set->mName;
ret["color"] = set->mColor.getValue();
ret["notices"] = set->mNotify;
- for (uuid_set_t::iterator friend_itr = set->mFriends.begin(); friend_itr != set->mFriends.end(); ++friend_itr)
+ for (const auto& friend_id : set->mFriends)
{
- ret["friends"][(*friend_itr).asString()] = "";
+ ret["friends"][friend_id.asString()] = "";
}
}
@@ -176,12 +176,12 @@ void LGGContactSets::saveToDisk()
file.close();
}
-bool LGGContactSets::saveContactSetToDisk(const std::string& set_name, const std::string& filename)
+bool LGGContactSets::saveContactSetToDisk(std::string_view set_name, std::string_view filename)
{
if (isValidSet(set_name))
{
llofstream file;
- file.open(filename.c_str());
+ file.open(filename.data());
LLSDSerialize::toPrettyXML(exportContactSet(set_name), file);
file.close();
return true;
@@ -300,7 +300,7 @@ void LGGContactSets::importFromLLSD(const LLSD& data)
}
}
-LLColor4 LGGContactSets::getSetColor(const std::string& set_name)
+LLColor4 LGGContactSets::getSetColor(std::string_view set_name)
{
ContactSet* set = getContactSet(set_name);
if (set)
@@ -318,7 +318,7 @@ LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color,
bool rlv_shownames = !RlvActions::canShowName(RlvActions::SNC_DEFAULT, uuid);
LLColor4 color = cur_color;
- if (uuid == gAgent.getID())
+ if (uuid == gAgentID)
{
switch (type)
{
@@ -338,7 +338,7 @@ LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color,
break;
}
}
- else if (LLAvatarTracker::instance().getBuddyInfo(uuid) != NULL)
+ else if (LLAvatarTracker::instance().getBuddyInfo(uuid))
{
switch (type)
{
@@ -452,7 +452,7 @@ LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color,
return color;
}
-LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, const std::string& ignored_set_name)
+LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name)
{
LLColor4 color = getDefaultColor();
if (ignored_set_name == CS_SET_NO_SETS)
@@ -462,9 +462,8 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, const std::stri
U32 lowest = U32_MAX;
string_vec_t contact_sets = getFriendSets(friend_id);
- for (string_vec_t::iterator it = contact_sets.begin(); it != contact_sets.end(); ++it)
+ for (const auto& set_name : contact_sets)
{
- std::string set_name = *it;
if (set_name != ignored_set_name)
{
U32 set_size = (U32)getFriendsInSet(set_name).size();
@@ -489,7 +488,7 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, const std::stri
{
if (isFriendInSet(friend_id, ignored_set_name) && !isInternalSetName(ignored_set_name))
{
- return mContactSets[ignored_set_name]->mColor;
+ return mContactSets[ignored_set_name.data()]->mColor;
}
}
return color;
@@ -555,21 +554,20 @@ bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGC
string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id)
{
- string_vec_t sets;
+ string_vec_t sets{};
contact_set_map_t::iterator set_itr_end = mContactSets.end();
- for (contact_set_map_t::iterator itr = mContactSets.begin(); itr != set_itr_end; ++itr)
+ for (const auto& [set_name, set] : mContactSets)
{
- ContactSet* set = itr->second;
if (set->hasFriend(friend_id))
{
- sets.push_back(set->mName);
+ sets.emplace_back(set->mName);
}
}
return sets;
}
-uuid_vec_t LGGContactSets::getFriendsInSet(const std::string& set_name)
+uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name)
{
uuid_vec_t friends;
@@ -593,9 +591,9 @@ uuid_vec_t LGGContactSets::getFriendsInSet(const std::string& set_name)
ContactSet* set = getContactSet(set_name);
if (set)
{
- for (uuid_set_t::iterator itr = set->mFriends.begin(); itr != set->mFriends.end(); ++itr)
+ for (const auto& id : set->mFriends)
{
- friends.push_back(*itr);
+ friends.emplace_back(id);
}
}
@@ -604,11 +602,11 @@ uuid_vec_t LGGContactSets::getFriendsInSet(const std::string& set_name)
string_vec_t LGGContactSets::getAllContactSets()
{
- string_vec_t sets;
+ string_vec_t sets{};
- for (contact_set_map_t::iterator itr = mContactSets.begin(); itr != mContactSets.end(); ++itr)
+ for (const auto& [set_name, set] : mContactSets)
{
- sets.push_back(itr->second->mName);
+ sets.push_back(set->mName);
}
return sets;
@@ -616,11 +614,10 @@ string_vec_t LGGContactSets::getAllContactSets()
uuid_vec_t LGGContactSets::getFriendsInAnySet()
{
- std::set friendsInAnySet;
+ uuid_set_t friendsInAnySet{};
- for (contact_set_map_t::iterator set_itr = mContactSets.begin(); set_itr != mContactSets.end(); ++set_itr)
+ for (const auto& [set_name, set] : mContactSets)
{
- ContactSet* set = set_itr->second;
for (uuid_set_t::iterator itr = set->mFriends.begin(); itr != set->mFriends.end(); ++itr)
{
friendsInAnySet.insert(*itr);
@@ -632,9 +629,8 @@ uuid_vec_t LGGContactSets::getFriendsInAnySet()
bool LGGContactSets::isFriendInSet(const LLUUID& friend_id)
{
- for (contact_set_map_t::iterator itr = mContactSets.begin(); itr != mContactSets.end(); ++itr)
+ for (const auto& [set_name, set] : mContactSets)
{
- ContactSet* set = itr->second;
if (set->hasFriend(friend_id))
{
return true;
@@ -644,7 +640,7 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id)
return false;
}
-bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, const std::string& set_name)
+bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set_name)
{
if (set_name == CS_SET_ALL_SETS)
{
@@ -678,9 +674,9 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, const std::string& s
bool LGGContactSets::notifyForFriend(const LLUUID& friend_id)
{
string_vec_t sets = getFriendSets(friend_id);
- for (string_vec_t::const_iterator itr = sets.begin(); itr != sets.end(); ++itr)
+ for (const auto& set_name : sets)
{
- if (mContactSets[*itr]->mNotify)
+ if (mContactSets[set_name]->mNotify)
{
return true;
}
@@ -688,7 +684,7 @@ bool LGGContactSets::notifyForFriend(const LLUUID& friend_id)
return false;
}
-void LGGContactSets::addToSet(const uuid_vec_t& avatar_ids, const std::string& set_name)
+void LGGContactSets::addToSet(const uuid_vec_t& avatar_ids, std::string_view set_name)
{
LLAvatarTracker& tracker = LLAvatarTracker::instance();
@@ -701,7 +697,7 @@ void LGGContactSets::addToSet(const uuid_vec_t& avatar_ids, const std::string& s
if (isValidSet(set_name))
{
- mContactSets[set_name]->mFriends.insert(avatar_id);
+ mContactSets[set_name.data()]->mFriends.insert(avatar_id);
}
}
@@ -734,9 +730,9 @@ void LGGContactSets::removeNonFriendFromList(const LLUUID& non_friend_id, bool s
void LGGContactSets::removeFriendFromAllSets(const LLUUID& friend_id, bool save_changes /*= true*/)
{
string_vec_t sets = getFriendSets(friend_id);
- for (string_vec_t::const_iterator itr = sets.begin(); itr != sets.end(); ++itr)
+ for (const auto& set_name : sets)
{
- removeFriendFromSet(friend_id, (*itr), save_changes);
+ removeFriendFromSet(friend_id, set_name, save_changes);
}
}
@@ -753,13 +749,13 @@ bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id)
uuid_vec_t LGGContactSets::getListOfNonFriends()
{
LLAvatarTracker& tracker = LLAvatarTracker::instance();
- uuid_vec_t nonfriends;
+ uuid_vec_t nonfriends{};
for (const auto& friend_id : mExtraAvatars)
{
if (!tracker.isBuddy(friend_id))
{
- nonfriends.push_back(friend_id);
+ nonfriends.emplace_back(friend_id);
}
}
@@ -768,17 +764,17 @@ uuid_vec_t LGGContactSets::getListOfNonFriends()
uuid_vec_t LGGContactSets::getListOfPseudonymAvs()
{
- uuid_vec_t pseudonyms;
+ uuid_vec_t pseudonyms{};
- for (uuid_map_t::iterator itr = mPseudonyms.begin(); itr != mPseudonyms.end(); ++itr)
+ for (const auto& [id, pseudonym] : mPseudonyms)
{
- pseudonyms.push_back(itr->first);
+ pseudonyms.emplace_back(pseudonym);
}
return pseudonyms;
}
-void LGGContactSets::setPseudonym(const LLUUID& friend_id, const std::string& pseudonym)
+void LGGContactSets::setPseudonym(const LLUUID& friend_id, std::string_view pseudonym)
{
LLAvatarNameCache* inst = LLAvatarNameCache::getInstance();
mPseudonyms[friend_id] = pseudonym;
@@ -863,9 +859,9 @@ bool LGGContactSets::hasPseudonym(const LLUUID& friend_id)
bool LGGContactSets::hasPseudonym(uuid_vec_t ids)
{
bool has_pseudonym = false;
- for (uuid_vec_t::const_iterator id = ids.begin(); id != ids.end(); ++id)
+ for (const auto& id : ids)
{
- if (hasPseudonym(*id))
+ if (hasPseudonym(id))
{
has_pseudonym = true;
break;
@@ -882,9 +878,9 @@ bool LGGContactSets::hasDisplayNameRemoved(const LLUUID& friend_id)
bool LGGContactSets::hasDisplayNameRemoved(uuid_vec_t ids)
{
bool has_pseudonym = false;
- for (uuid_vec_t::const_iterator id = ids.begin(); id != ids.end(); ++id)
+ for (const auto& id : ids)
{
- if (hasDisplayNameRemoved(*id))
+ if (hasDisplayNameRemoved(id))
{
has_pseudonym = true;
break;
@@ -903,7 +899,7 @@ void LGGContactSets::removeDisplayName(const LLUUID& friend_id)
setPseudonym(friend_id, CS_PSEUDONYM);
}
-void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, const std::string& set_name, bool save_changes /*= true*/)
+void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, std::string_view set_name, bool save_changes /*= true*/)
{
if (set_name == CS_SET_EXTRA_AVS)
{
@@ -926,12 +922,12 @@ void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, const std::str
}
}
-bool LGGContactSets::isValidSet(const std::string& set_name)
+bool LGGContactSets::isValidSet(std::string_view set_name)
{
- return (mContactSets.find(set_name) != mContactSets.end());
+ return (mContactSets.find(set_name.data()) != mContactSets.end());
}
-void LGGContactSets::addSet(const std::string& set_name)
+void LGGContactSets::addSet(std::string_view set_name)
{
if (!isInternalSetName(set_name) && !isValidSet(set_name))
{
@@ -939,21 +935,21 @@ void LGGContactSets::addSet(const std::string& set_name)
set->mName = set_name;
set->mColor = LLColor4::red;
set->mNotify = false;
- mContactSets[set_name] = set;
+ mContactSets[set_name.data()] = set;
saveToDisk();
mChangedSignal(UPDATED_LISTS);
}
}
-bool LGGContactSets::renameSet(const std::string& set_name, const std::string& new_set_name)
+bool LGGContactSets::renameSet(std::string_view set_name, std::string_view new_set_name)
{
if (!isInternalSetName(set_name) && isValidSet(set_name) &&
!isInternalSetName(new_set_name) && !isValidSet(new_set_name))
{
ContactSet* set = getContactSet(set_name);
set->mName = new_set_name;
- mContactSets.erase(set_name);
- mContactSets[new_set_name] = set;
+ mContactSets.erase(set_name.data());
+ mContactSets[new_set_name.data()] = set;
saveToDisk();
mChangedSignal(UPDATED_LISTS);
return true;
@@ -961,27 +957,27 @@ bool LGGContactSets::renameSet(const std::string& set_name, const std::string& n
return false;
}
-void LGGContactSets::removeSet(const std::string& set_name)
+void LGGContactSets::removeSet(std::string_view set_name)
{
- contact_set_map_t::iterator found = mContactSets.find(set_name);
+ contact_set_map_t::iterator found = mContactSets.find(set_name.data());
if (found != mContactSets.end())
{
LLAvatarTracker& tracker = LLAvatarTracker::instance();
uuid_vec_t non_friends_for_removal;
ContactSet* cset = found->second;
- for (uuid_set_t::iterator member_it = cset->mFriends.begin(); member_it != cset->mFriends.end(); ++member_it)
+ for (const auto& friend_id : cset->mFriends)
{
- if (!tracker.isBuddy(*member_it) &&
- getFriendSets(*member_it).size() == 1 && // Current set is only set!
- !hasPseudonym(*member_it))
+ if (!tracker.isBuddy(friend_id) &&
+ getFriendSets(friend_id).size() == 1 && // Current set is only set!
+ !hasPseudonym(friend_id))
{
- non_friends_for_removal.push_back(*member_it);
+ non_friends_for_removal.emplace_back(friend_id);
}
}
- for (uuid_vec_t::iterator nf_it = non_friends_for_removal.begin(); nf_it != non_friends_for_removal.end(); ++nf_it)
+ for (const auto& non_friend_id : non_friends_for_removal)
{
- removeNonFriendFromList(*nf_it, false);
+ removeNonFriendFromList(non_friend_id, false);
}
delete found->second;
@@ -991,7 +987,7 @@ void LGGContactSets::removeSet(const std::string& set_name)
}
}
-void LGGContactSets::setNotifyForSet(const std::string& set_name, bool notify)
+void LGGContactSets::setNotifyForSet(std::string_view set_name, bool notify)
{
ContactSet* set = getContactSet(set_name);
if (set)
@@ -1001,7 +997,7 @@ void LGGContactSets::setNotifyForSet(const std::string& set_name, bool notify)
}
}
-bool LGGContactSets::getNotifyForSet(const std::string& set_name)
+bool LGGContactSets::getNotifyForSet(std::string_view set_name)
{
ContactSet* set = getContactSet(set_name);
if (set)
@@ -1011,7 +1007,7 @@ bool LGGContactSets::getNotifyForSet(const std::string& set_name)
return false;
}
-void LGGContactSets::setSetColor(const std::string& set_name, const LLColor4& color)
+void LGGContactSets::setSetColor(std::string_view set_name, const LLColor4& color)
{
ContactSet* set = getContactSet(set_name);
if (set)
@@ -1021,7 +1017,7 @@ void LGGContactSets::setSetColor(const std::string& set_name, const LLColor4& co
}
}
-bool LGGContactSets::isInternalSetName(const std::string& set_name)
+bool LGGContactSets::isInternalSetName(std::string_view set_name)
{
return (set_name.empty() ||
set_name == CS_SET_EXTRA_AVS ||
@@ -1031,21 +1027,21 @@ bool LGGContactSets::isInternalSetName(const std::string& set_name)
set_name == CS_GLOBAL_SETTINGS);
}
-LGGContactSets::ContactSet* LGGContactSets::getContactSet(const std::string& set_name)
+LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_name)
{
if (set_name.empty())
{
LL_WARNS("ContactSets") << "No contact set specified" << LL_ENDL;
- return NULL;
+ return nullptr;
}
- contact_set_map_t::iterator found = mContactSets.find(set_name);
+ contact_set_map_t::iterator found = mContactSets.find(set_name.data());
if (found != mContactSets.end())
{
return found->second;
}
LL_WARNS("ContactSets") << "No contact set named " << set_name << LL_ENDL;
- return NULL;
+ return nullptr;
}
bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym)
@@ -1097,7 +1093,7 @@ bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification,
instance.removeFriendFromSet(id, set_name, false);
if (!tracker.isBuddy(id) &&
- instance.getFriendSets(id).size() == 0 &&
+ instance.getFriendSets(id).empty() &&
!instance.hasPseudonym(id))
{
instance.removeNonFriendFromList(id, false);
diff --git a/indra/newview/lggcontactsets.h b/indra/newview/lggcontactsets.h
index 76d87cdc7a..c7607c4b57 100644
--- a/indra/newview/lggcontactsets.h
+++ b/indra/newview/lggcontactsets.h
@@ -55,9 +55,9 @@ public:
void loadFromDisk();
- void setSetColor(const std::string& set_name, const LLColor4& color);
- LLColor4 getSetColor(const std::string& set_name);
- LLColor4 getFriendColor(const LLUUID& friend_id, const std::string& ignored_set_name = "");
+ void setSetColor(std::string_view set_name, const LLColor4& color);
+ LLColor4 getSetColor(std::string_view set_name);
+ LLColor4 getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name = "");
LLColor4 colorize(const LLUUID& uuid, const LLColor4& cur_color, ELGGCSType type);
void setDefaultColor(const LLColor4& default_color) { mDefaultColor = default_color; };
@@ -77,17 +77,17 @@ public:
string_vec_t getFriendSets(const LLUUID& friend_id);
string_vec_t getAllContactSets();
- void addToSet(const uuid_vec_t&, const std::string& set_name);
- void removeFriendFromSet(const LLUUID& friend_id, const std::string& set_name, bool save_changes = true);
+ void addToSet(const uuid_vec_t&, std::string_view set_name);
+ void removeFriendFromSet(const LLUUID& friend_id, std::string_view set_name, bool save_changes = true);
void removeFriendFromAllSets(const LLUUID& friend_id, bool save_changes = true);
- bool isFriendInSet(const LLUUID& friend_id, const std::string& set_name);
+ bool isFriendInSet(const LLUUID& friend_id, std::string_view set_name);
bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type);
bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color);
- void addSet(const std::string& set_name);
- bool renameSet(const std::string& set_name, const std::string& new_set_name);
- void removeSet(const std::string& set_name);
- bool isValidSet(const std::string& set_name);
+ void addSet(std::string_view set_name);
+ bool renameSet(std::string_view set_name, std::string_view new_set_name);
+ void removeSet(std::string_view set_name);
+ bool isValidSet(std::string_view set_name);
void removeNonFriendFromList(const LLUUID& non_friend_id, bool save_changes = true);
bool isNonFriend(const LLUUID& non_friend_id);
@@ -96,12 +96,12 @@ public:
uuid_vec_t getListOfPseudonymAvs();
bool notifyForFriend(const LLUUID& friend_id);
- void setNotifyForSet(const std::string& set_name, bool notify);
- bool getNotifyForSet(const std::string& set_name);
+ void setNotifyForSet(std::string_view set_name, bool notify);
+ bool getNotifyForSet(std::string_view set_name);
bool callbackAliasReset(const LLSD& notification, const LLSD& response);
- bool isInternalSetName(const std::string& set_name);
+ bool isInternalSetName(std::string_view set_name);
bool hasSets() { return !mContactSets.empty(); }
class ContactSet
@@ -117,7 +117,7 @@ public:
bool mNotify;
LLColor4 mColor;
};
- ContactSet* getContactSet(const std::string& set_name);
+ ContactSet* getContactSet(std::string_view set_name);
// [FS:CR] Signals for updating the various UI
typedef enum e_contact_set_update {
@@ -140,14 +140,14 @@ public:
private:
void toneDownColor(LLColor4& color) const;
- uuid_vec_t getFriendsInSet(const std::string& set_name);
+ uuid_vec_t getFriendsInSet(std::string_view set_name);
uuid_vec_t getFriendsInAnySet();
- void setPseudonym(const LLUUID& friend_id, const std::string& pseudonym);
+ void setPseudonym(const LLUUID& friend_id, std::string_view pseudonym);
bool hasVisuallyDifferentPseudonym(const LLUUID& friend_id);
- LLSD exportContactSet(const std::string& set_name);
- bool saveContactSetToDisk(const std::string& set_name, const std::string& filename);
+ LLSD exportContactSet(std::string_view set_name);
+ bool saveContactSetToDisk(std::string_view set_name, std::string_view filename);
std::string getFilename();
std::string getDefaultFilename();
diff --git a/indra/newview/linux_tools/launch_url.sh b/indra/newview/linux_tools/launch_url.sh
index 404ea36f26..3e90a942ed 100755
--- a/indra/newview/linux_tools/launch_url.sh
+++ b/indra/newview/linux_tools/launch_url.sh
@@ -45,7 +45,7 @@ if [ ! -z "$XBROWSER" ]; then
echo "$0: Trying some others..."
fi
-# Launcher the default GNOME browser.
+# Launch the default GNOME browser.
if [ ! -z "$GNOME_DESKTOP_SESSION_ID" ] && which gnome-open >/dev/null; then
gnome-open "$URL" &
exit
@@ -60,6 +60,7 @@ fi
# List of browser commands that will be tried in the order listed. x-www-browser
# will be tried first, which is a debian alternative.
BROWSER_COMMANDS=" \
+ xdg-open \
x-www-browser \
firefox \
mozilla-firefox \
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 75e3275a91..c445b6f06d 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -305,7 +305,7 @@ private:
LLUUID mCOFImageID;
- std::auto_ptr mUnlockOutfitTimer;
+ std::unique_ptr mUnlockOutfitTimer;
// Set of temp attachment UUIDs that should be removed
typedef std::set doomed_temp_attachments_t;
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index dfbb5ba8c8..2e26f284d4 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1232,11 +1232,6 @@ bool LLFace::canRenderAsMask()
{
return false;
}
-
- // shortcircuit fully alpha faces
- if (getViewerObject()->isHUDAttachment()) { return false; }
- if (te->getAlpha() == 0.0f && (te->getGlow() == 0.f)) { return true; }
- //
LLMaterial* mat = te->getMaterialParams();
if (mat && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND)
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index c843fd0f7c..028689fb00 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -1002,7 +1002,7 @@ void LLFavoritesBarCtrl::updateButtons(bool force_update)
{
//find last visible child to get the rightest button offset
child_list_const_reverse_iter_t last_visible_it = std::find_if(childs->rbegin(), childs->rend(),
- std::mem_fun(&LLView::getVisible));
+ [](child_list_t::value_type child){ return child->getVisible(); });
if(last_visible_it != childs->rend())
{
last_right_edge = (*last_visible_it)->getRect().mRight;
diff --git a/indra/newview/llfloater360capture.cpp b/indra/newview/llfloater360capture.cpp
index 6eec980da8..610746ca80 100644
--- a/indra/newview/llfloater360capture.cpp
+++ b/indra/newview/llfloater360capture.cpp
@@ -112,7 +112,8 @@ BOOL LLFloater360Capture::postBuild()
// UX/UI called for preview mode (always the first index/option)
// by default each time vs restoring the last value
- mQualityRadioGroup->setSelectedIndex(0);
+ // UX/UI has no clue what the users actually want!
+ //mQualityRadioGroup->setSelectedIndex(0);
// Construct a URL pointing to the first page to load. Although
// we do not use this page for anything (after some significant
@@ -319,6 +320,11 @@ const std::string LLFloater360Capture::getHTMLBaseFolder()
// triggered when the 'capture' button in the UI is pressed
void LLFloater360Capture::onCapture360ImagesBtn()
{
+ // FIRE-31942 Avoid CoRo that appears to never usefully yield
+ // Allow option to re-enable on the off chance a low power machine can benefit
+ if(gSavedSettings.getBOOL("FSUseCoRoFor360Capture"))
+ {
+ //
// launch the main capture code in a coroutine so we can
// yield/suspend at some points to give the main UI
// thread a look-in occasionally.
@@ -326,6 +332,13 @@ void LLFloater360Capture::onCapture360ImagesBtn()
{
capture360Images();
});
+ // FIRE-31942 Avoid CoRo that appears to never usefully yield
+ }
+ else
+ {
+ capture360Images();
+ }
+ //
}
// Gets the full path name for a given JavaScript file in the HTML folder. We
@@ -682,6 +695,7 @@ void LLFloater360Capture::capture360Images()
// allow the UI to update by suspending and waiting for the
// main render loop to update the UI
+ if(gSavedSettings.getBOOL("FSUseCoRoFor360Capture")) // FIRE-31942 - make apparently pointless CoRo optional (just in case)
suspendForAFrame();
}
@@ -892,7 +906,7 @@ const std::string LLFloater360Capture::generate_proposed_filename()
// this looks complex but it's straightforward - removes all non-alpha chars from a string
// which in this case is the SL region name - we use it as a proposed filename but the user is free to change
std::string region_name = region->getName();
- std::replace_if(region_name.begin(), region_name.end(), std::not1(std::ptr_fun(isalnum)), '_');
+ std::replace_if(region_name.begin(), region_name.end(), [](const auto& c) { return isalnum(c) == 0; }, '_');
if (region_name.length() > 0)
{
filename << region_name;
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 1061bdb6ec..5405662e84 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -571,9 +571,9 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
}
msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_EstateID, estate_id);
- panel->getChild("estate_id")->setValue(LLSD((F32) estate_id));
- panel->getChild("grid_position_x")->setValue(LLSD((F32) grid_pos_x));
- panel->getChild("grid_position_y")->setValue(LLSD((F32) grid_pos_y));
+ panel->getChild("estate_id")->setValue(LLSD::Integer(estate_id));
+ panel->getChild("grid_position_x")->setValue(LLSD::Integer(grid_pos_x));
+ panel->getChild("grid_position_y")->setValue(LLSD::Integer(grid_pos_y));
//
// DEBUG PANEL
@@ -719,9 +719,7 @@ void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region)
std::for_each(
mInfoPanels.begin(),
mInfoPanels.end(),
- llbind2nd(
- std::mem_fun(&LLPanelRegionInfo::refreshFromRegion),
- region));
+ [region](info_panels_t::value_type panel) { panel->refreshFromRegion(region); });
mEnvironmentPanel->refreshFromRegion(region);
}
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 701cfc4f16..6b7dab5931 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -659,14 +659,33 @@ void LLFloaterTools::refresh()
LLViewerObject* selected_object = mObjectSelection->getFirstObject();
if (selected_object)
{
- // Select a parcel at the currently selected object's position.
- LLViewerParcelMgr::getInstance()->selectParcelAt(selected_object->getPositionGlobal());
+ // FIRE-20387: Editing HUD attachment shows [CAPACITY_STRING] in tools floater
+ //LLViewerParcelMgr::getInstance()->selectParcelAt(selected_object->getPositionGlobal());
+ if (!selected_object->isAttachment())
+ {
+ LLViewerParcelMgr::getInstance()->selectParcelAt(selected_object->getPositionGlobal());
+ }
+ else
+ {
+ const LLStringExplicit empty_str("");
+ childSetTextArg("more info label", "[CAPACITY_STRING]", empty_str);
+ }
+ //
}
else
{
LL_WARNS() << "Failed to get selected object" << LL_ENDL;
}
}
+ // Bring back remaining capacity info
+ else
+ {
+ // Selection crosses parcel bounds.
+ // We don't display remaining land capacity in this case.
+ const LLStringExplicit empty_str("");
+ childSetTextArg("more info label", "[CAPACITY_STRING]", empty_str);
+ }
+ //
// We got this already
//if (object_count == 1)
@@ -1071,8 +1090,9 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
//
getChildView("more info label")->setVisible(!land_visible && have_selection);
getChildView("selection_count")->setVisible(!land_visible && have_selection);
- getChildView("selection_faces")->setVisible(LLToolFace::getInstance() == LLToolMgr::getInstance()->getCurrentTool()
- && LLSelectMgr::getInstance()->getSelection()->getObjectCount() == 1);
+ // We got this already
+ //getChildView("selection_faces")->setVisible(LLToolFace::getInstance() == LLToolMgr::getInstance()->getCurrentTool()
+ // && LLSelectMgr::getInstance()->getSelection()->getObjectCount() == 1);
getChildView("selection_empty")->setVisible(!land_visible && !have_selection);
//mTab->setVisible(!land_visible);
@@ -1485,6 +1505,27 @@ void LLFloaterTools::updateLandImpacts()
return;
}
+ // Bring back remaining capacity info
+ S32 rezzed_prims = parcel->getSimWidePrimCount();
+ S32 total_capacity = parcel->getSimWideMaxPrimCapacity();
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (region)
+ {
+ S32 max_tasks_per_region = (S32)region->getMaxTasks();
+ total_capacity = llmin(total_capacity, max_tasks_per_region);
+ }
+ std::string remaining_capacity_str = "";
+
+ if (gMeshRepo.meshRezEnabled())
+ {
+ LLStringUtil::format_map_t remaining_capacity_args;
+ remaining_capacity_args["LAND_CAPACITY"] = llformat("%d", total_capacity - rezzed_prims);
+ remaining_capacity_str = getString("status_remaining_capacity", remaining_capacity_args);
+ }
+
+ childSetTextArg("more info label", "[CAPACITY_STRING]", remaining_capacity_str);
+ //
+
// Update land impacts info in the weights floater
LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::findTypedInstance("object_weights");
if(object_weights_floater)
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index c03821490d..ef6d91efe6 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -773,7 +773,7 @@ S32 LLGestureMgr::getPlayingCount() const
}
-struct IsGesturePlaying : public std::unary_function
+struct IsGesturePlaying
{
bool operator()(const LLMultiGesture* gesture) const
{
diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
index c62f36cc27..19ed1e07d7 100644
--- a/indra/newview/llhudtext.cpp
+++ b/indra/newview/llhudtext.cpp
@@ -371,7 +371,7 @@ void LLHUDText::updateVisibility()
if (!mSourceObject)
{
- LL_WARNS() << "HUD text: mSourceObject is NULL, mOnHUDAttachment: " << mOnHUDAttachment << LL_ENDL;
+ LL_WARNS_ONCE() << "HUD text: mSourceObject is NULL, mOnHUDAttachment: " << mOnHUDAttachment << LL_ENDL;
mVisible = TRUE;
if (mOnHUDAttachment)
{
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index f2f6ffe6f7..11f5c8a015 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3732,6 +3732,12 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
gSavedPerAccountSettings.setLLSD("FSProtectedFolders", new_protected_folders);
}
//
+ // Show folder in new window option
+ else if ("show_in_new_window" == action)
+ {
+ LLFloaterReg::showInstance("fs_partial_inventory", LLSD().with("start_folder_id", mUUID).with("start_folder_name", mDisplayName));
+ }
+ //
}
void LLFolderBridge::gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level)
@@ -4674,6 +4680,9 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
}
//
+ // Show folder in new window option
+ items.push_back((std::string("Show in new Window")));
+
// Add menu items that are dependent on the contents of the folder.
LLViewerInventoryCategory* category = (LLViewerInventoryCategory *) model->getCategory(mUUID);
if (category && (marketplace_listings_id != mUUID))
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index c0577920be..4f2fbedc15 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -2653,7 +2653,38 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
//
LLSD args;
- args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem");
+ // FIRE-31816: Include selection count when deleting more than one object from inventory
+ //args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem");
+ //args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem", args);
+ LLLocale locale("");
+ std::string count_str{};
+ S32 selection_count = root->getSelectedCount();
+ S32 total_count{ 0 };
+
+ for (const auto item : root->getSelectedItems())
+ {
+ total_count++;
+
+ LLFolderViewModelItemInventory * view_model = dynamic_cast(item->getViewModelItem());
+ if (view_model)
+ {
+ auto cat = model->getCategory(view_model->getUUID());
+ if (cat)
+ {
+ LLInventoryModel::cat_array_t cats;
+ LLInventoryModel::item_array_t items;
+ model->collectDescendents(cat->getUUID(), cats, items, TRUE);
+ total_count += (S32)(cats.size() + items.size());
+ }
+ }
+ }
+
+ LLResMgr::instance().getIntegerString(count_str, selection_count);
+ args["COUNT_SELECTION"] = count_str;
+ LLResMgr::instance().getIntegerString(count_str, total_count);
+ args["COUNT_TOTAL"] = count_str;
+ args["QUESTION"] = LLTrans::getString(selection_count > 1 ? "DeleteItems" : "DeleteItem", args);
+ //
LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle()));
}
// Note: marketplace listings will be updated in the callback if delete confirmed
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 67cc1efd6b..e92476f465 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -1862,9 +1862,9 @@ void LLNetMap::setAvatarMarkColors(const uuid_vec_t& avatar_ids, const LLSD& col
// Use the name as color definition name from colors.xml
LLColor4 mark_color = LLUIColorTable::instance().getColor(color.asString(), LLColor4::green);
- for (uuid_vec_t::const_iterator it = avatar_ids.begin(); it != avatar_ids.end(); ++it)
+ for (const auto& avatar_id : avatar_ids)
{
- sAvatarMarksMap[*it] = mark_color;
+ sAvatarMarksMap[avatar_id] = mark_color;
}
}
@@ -1879,13 +1879,9 @@ void LLNetMap::clearAvatarMarkColor(const LLUUID& avatar_id)
// static
void LLNetMap::clearAvatarMarkColors(const uuid_vec_t& avatar_ids)
{
- for (uuid_vec_t::const_iterator it = avatar_ids.begin(); it != avatar_ids.end(); ++it)
+ for (const auto& avatar_id : avatar_ids)
{
- avatar_marks_map_t::iterator found = sAvatarMarksMap.find(*it);
- if (found != sAvatarMarksMap.end())
- {
- sAvatarMarksMap.erase(found);
- }
+ sAvatarMarksMap.erase(avatar_id);
}
}
@@ -1907,10 +1903,7 @@ LLColor4 LLNetMap::getAvatarColor(const LLUUID& avatar_id)
color = cs_instance.colorize(avatar_id, color, LGG_CS_MINIMAP);
// Color based on contact sets prefs
- if (cs_instance.hasFriendColorThatShouldShow(avatar_id, LGG_CS_MINIMAP))
- {
- color = cs_instance.getFriendColor(avatar_id);
- }
+ cs_instance.hasFriendColorThatShouldShow(avatar_id, LGG_CS_MINIMAP, color);
// Mark Avatars with special colors
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(avatar_id);
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index e54d35b203..fe63d3b229 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1439,7 +1439,7 @@ void LLPanelEditWearable::changeCamera(U8 subpart)
gMorphView->setCameraOffset( subpart_entry->mCameraOffset );
if (gSavedSettings.getBOOL("AppearanceCameraMovement"))
{
- gAgentCamera.setFocusOnAvatar(FALSE, FALSE);
+ // gAgentCamera.setFocusOnAvatar(FALSE, FALSE); FIRE-31959 Restore proper turning behaviour.
gMorphView->updateCamera();
}
}
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index e6eedd76bf..280611329b 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -76,6 +76,10 @@ LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id,
// FIRE-24306: Retain cursor position when saving notecards
,mCursorPos(0)
,mScrollPos(0)
+ // FIRE-29425: User-selectable font and size for notecards
+ ,mFontNameChangedCallbackConnection()
+ ,mFontSizeChangedCallbackConnection()
+ //
{
const LLInventoryItem *item = getItem();
if (item)
@@ -87,6 +91,17 @@ LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id,
LLPreviewNotecard::~LLPreviewNotecard()
{
delete mLiveFile;
+
+ // FIRE-29425: User-selectable font and size for notecards
+ if (mFontNameChangedCallbackConnection.connected())
+ {
+ mFontNameChangedCallbackConnection.disconnect();
+ }
+ if (mFontSizeChangedCallbackConnection.connected())
+ {
+ mFontSizeChangedCallbackConnection.disconnect();
+ }
+ //
}
BOOL LLPreviewNotecard::postBuild()
@@ -118,6 +133,12 @@ BOOL LLPreviewNotecard::postBuild()
}
getChild("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ // FIRE-29425: User-selectable font and size for notecards
+ mFontNameChangedCallbackConnection = gSavedSettings.getControl("FSNotecardFontName")->getSignal()->connect(boost::bind(&LLPreviewNotecard::onFontChanged, this));
+ mFontSizeChangedCallbackConnection = gSavedSettings.getControl("FSNotecardFontSize")->getSignal()->connect(boost::bind(&LLPreviewNotecard::onFontChanged, this));
+ onFontChanged();
+ //
+
return LLPreview::postBuild();
}
@@ -983,5 +1004,15 @@ void LLPreviewNotecard::checkCloseAfterSave()
}
//
+// FIRE-29425: User-selectable font and size for notecards
+void LLPreviewNotecard::onFontChanged()
+{
+ LLFontGL* font = LLFontGL::getFont(LLFontDescriptor(gSavedSettings.getString("FSNotecardFontName"), gSavedSettings.getString("FSNotecardFontSize"), LLFontGL::NORMAL));
+ if (font)
+ {
+ mEditor->setFont(font);
+ }
+}
+//
// EOF
diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h
index 69d949da7c..09a61ea45f 100644
--- a/indra/newview/llpreviewnotecard.h
+++ b/indra/newview/llpreviewnotecard.h
@@ -129,6 +129,12 @@ protected:
bool writeToFile(const std::string& filename);
std::string getTmpFileName();
+ // FIRE-29425: User-selectable font and size for notecards
+ boost::signals2::connection mFontNameChangedCallbackConnection;
+ boost::signals2::connection mFontSizeChangedCallbackConnection;
+ void onFontChanged();
+ //
+
protected:
LLViewerTextEditor* mEditor;
LLButton* mSaveBtn;
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 0a081176ba..08176044dd 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -1839,11 +1839,9 @@ void LLScriptEdCore::onFontChanged()
if (font)
{
mEditor->setFont(font);
- mEditor->needsReflow();
if (mPostEditor)
{
mPostEditor->setFont(font);
- mPostEditor->needsReflow();
}
}
}
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 69074b1670..2b1fedf74d 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -222,7 +222,7 @@ private:
LLPanel* mWrapperPanel;
// timer counts a lifetime of a toast
- std::auto_ptr mTimer;
+ std::unique_ptr mTimer;
F32 mToastLifetime; // in seconds
F32 mToastFadingTime; // in seconds
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 7c7cd21c88..9b19dd48a7 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -197,6 +197,7 @@
#include "fsfloaterimport.h"
#include "fsfloaterim.h"
#include "fsfloaterimcontainer.h"
+#include "fsfloaterpartialinventory.h"
#include "fsfloaterplacedetails.h"
#include "fsfloaterposestand.h"
#include "fsfloaterprotectedfolders.h"
@@ -496,6 +497,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("fs_export", "floater_fs_export.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("fs_import", "floater_fs_import.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("fs_posestand", "floater_fs_posestand.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
+ LLFloaterReg::add("fs_partial_inventory", "floater_fs_partial_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("fs_placedetails", "floater_fs_placedetails.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("fs_protectedfolders", "floater_fs_protectedfolders.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("fs_radar", "floater_fs_radar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 18096a7f35..bfe83fe944 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -211,7 +211,9 @@ public:
// [/SL:KB]
{
- mStyle = new LLStyle(LLStyle::Params().font(LLFontGL::getFontSansSerif()));
+ // FIRE-29425: User-selectable font and size for notecards
+ //mStyle = new LLStyle(LLStyle::Params().font(LLFontGL::getFontSansSerif()));
+ mStyle = new LLStyle(LLStyle::Params().font(mEditor.getFont()));
mToolTip = inv_item->getName() + '\n' + inv_item->getDescription();
}
@@ -328,11 +330,15 @@ public:
// [/SL:KB]
/*virtual*/ LLStyleConstSP getStyle() const { return mStyle; }
+ /*virtual*/ void setStyle(LLStyleConstSP style) { mStyle = style; } // FIRE-29425: User-selectable font and size for notecards
private:
LLUIImagePtr mImage;
LLWString mLabel;
- LLStyleSP mStyle;
+ // FIRE-29425: User-selectable font and size for notecards
+ //LLStyleSP mStyle;
+ LLStyleConstSP mStyle;
+ //
std::string mToolTip;
LLPointer mItem;
LLTextEditor& mEditor;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 40ff5174a4..e0d48ee176 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -293,6 +293,9 @@ static const F32 MIN_UI_SCALE = 0.75f;
static const F32 MAX_UI_SCALE = 7.0f;
static const F32 MIN_DISPLAY_SCALE = 0.75f;
+// FIRE-31852: Now it aggressively executes gestures within focussed floaters...
+//static const char KEY_MOUSELOOK = 'M';
+
static LLCachedControl sSnapshotBaseName(LLCachedControl(gSavedPerAccountSettings, "SnapshotBaseName", "Snapshot"));
static LLCachedControl sSnapshotDir(LLCachedControl(gSavedPerAccountSettings, "SnapshotBaseDir", ""));
@@ -3296,9 +3299,17 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
if (keyboard_focus
&& !gFocusMgr.getKeystrokesOnly())
{
- // FIRE-31551: This causes aggressive switching into mouselook while any floater has focus
+ //Most things should fall through, but mouselook is an exception,
+ //don't switch to mouselook if any floater has focus
+ // FIRE-31852: Now it aggressively executes gestures within focussed floaters...
+ //if ((key == KEY_MOUSELOOK) && !(mask & (MASK_CONTROL | MASK_ALT)))
+ //{
+ // return TRUE;
+ //}
+
//LLUICtrl* cur_focus = dynamic_cast(keyboard_focus);
//if (cur_focus && cur_focus->acceptsTextInput())
+ //
{
#ifdef LL_WINDOWS
// On windows Alt Gr key generates additional Ctrl event, as result handling situations
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 5473d1456c..50a44d13d3 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1915,7 +1915,7 @@ BOOL LLVOVolume::genBBoxes(BOOL force_global, BOOL should_update_octree_bounds)
break;
//
- LLFace *face = mDrawable->getFace(i);
+ LLFace* face = mDrawable->getFace(i);
if (!face)
{
continue;
@@ -5664,7 +5664,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
}
}
- // if (type == LLRenderPass::PASS_ALPHA) // allow tracking through pipeline
+ if (type == LLRenderPass::PASS_ALPHA)
{ //for alpha sorting
facep->setDrawInfo(draw_info);
}
@@ -6549,7 +6549,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
}
#endif
-
+ //calculate maximum number of vertices to store in a single buffer
static LLCachedControl max_vbo_size(gSavedSettings, "RenderMaxVBOSize", 512);
U32 max_vertices = (max_vbo_size * 1024)/LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask);
max_vertices = llmin(max_vertices, (U32) 65535);
@@ -6617,14 +6617,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
LLFace* facep = *face_iter;
LLViewerTexture* tex = facep->getTexture();
const LLTextureEntry* te = facep->getTextureEntry();
- // Don't batch fully transparent faces
- if (te && ( te->getAlpha() == 0.f ) && ( te->getGlow() == 0.0 ) && !LLDrawPoolAlpha::sShowDebugAlpha)
- {
- facep->setSize(0,0);
- ++face_iter;
- continue;
- }
- //
LLMaterialPtr mat = te->getMaterialParams();
LLMaterialID matId = te->getMaterialID();
@@ -7029,10 +7021,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
else if (is_alpha)
{
// can we safely treat this as an alpha mask?
- // Nothing actually sets facecolor use the TE alpha instead.
- // if (facep->getFaceColor().mV[3] <= 0.f)
- if ((te->getAlpha() <=0.f || facep->getFaceColor().mV[3] <= 0.f) && te->getGlow() == 0.0 )
- //
+ if (facep->getFaceColor().mV[3] <= 0.f)
{ //100% transparent, don't render unless we're highlighting transparent
LL_PROFILE_ZONE_NAMED_CATEGORY_VOLUME("facep->alpha -> invisible");
registerFace(group, facep, LLRenderPass::PASS_ALPHA_INVISIBLE);
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
index 152f957cc5..83d88c6af4 100644
--- a/indra/newview/llwatchdog.cpp
+++ b/indra/newview/llwatchdog.cpp
@@ -231,7 +231,7 @@ void LLWatchdog::run()
LL_INFOS() << "Watchdog thread delayed: resetting entries." << LL_ENDL;
std::for_each(mSuspects.begin(),
mSuspects.end(),
- std::mem_fun(&LLWatchdogEntry::reset)
+ [](SuspectsRegistry::value_type suspect) { suspect->reset(); }
);
}
else
@@ -239,7 +239,7 @@ void LLWatchdog::run()
SuspectsRegistry::iterator result =
std::find_if(mSuspects.begin(),
mSuspects.end(),
- std::not1(std::mem_fun(&LLWatchdogEntry::isAlive))
+ [](SuspectsRegistry::value_type suspect) { return !suspect->isAlive(); }
);
if(result != mSuspects.end())
{
diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp
index 32c2a4a2fe..c283c65999 100644
--- a/indra/newview/llworldmipmap.cpp
+++ b/indra/newview/llworldmipmap.cpp
@@ -201,7 +201,7 @@ LLPointer LLWorldMipmap::loadObjectsTile(U32 grid_x, U32
//LL_INFOS("WorldMap") << "LLWorldMipmap::loadObjectsTile(), URL = " << imageurl << LL_ENDL;
LLPointer img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, FTT_MAP_TILE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
- LL_INFOS("MAPURL") << "fetching map tile from " << imageurl << LL_ENDL;
+ //LL_INFOS("MAPURL") << "fetching map tile from " << imageurl << LL_ENDL;
img->setBoostLevel(LLGLTexture::BOOST_MAP);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index d7f6ecd737..7a314a74c8 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -11275,7 +11275,10 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar, bool preview_avatar)
++attachment_iter)
{
LLViewerObject* attached_object = attachment_iter->get();
- if (attached_object && attached_object->isRiggedMesh())
+ // FIRE-31966: Some mesh bodies/objects don't show in shape editor previews -> show everything but animesh
+ //if (attached_object && attached_object->isRiggedMesh())
+ if (attached_object && !attached_object->getControlAvatar())
+ //
{
markVisible(attached_object->mDrawable->getSpatialBridge(), *viewer_camera);
}
@@ -11561,36 +11564,71 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar, bool preview_avatar)
bool LLPipeline::hasRenderBatches(const U32 type) const
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->getRenderMapSize(type) > 0;
}
LLCullResult::drawinfo_iterator LLPipeline::beginRenderMap(U32 type)
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->beginRenderMap(type);
}
LLCullResult::drawinfo_iterator LLPipeline::endRenderMap(U32 type)
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->endRenderMap(type);
}
LLCullResult::sg_iterator LLPipeline::beginAlphaGroups()
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->beginAlphaGroups();
}
LLCullResult::sg_iterator LLPipeline::endAlphaGroups()
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->endAlphaGroups();
}
LLCullResult::sg_iterator LLPipeline::beginRiggedAlphaGroups()
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->beginRiggedAlphaGroups();
}
LLCullResult::sg_iterator LLPipeline::endRiggedAlphaGroups()
{
+ // FIRE-31942, sCull can be invalid if triggering 360 snapshosts fast enough (due to snapshots running in their own co routine)
+ if( !sCull )
+ return {};
+ //
+
return sCull->endRiggedAlphaGroups();
}
diff --git a/indra/newview/skins/ansastorm/colors.xml b/indra/newview/skins/ansastorm/colors.xml
index a69ba44a78..4d42f48471 100644
--- a/indra/newview/skins/ansastorm/colors.xml
+++ b/indra/newview/skins/ansastorm/colors.xml
@@ -1397,4 +1397,16 @@
+
+
+
+
diff --git a/indra/newview/skins/ansastorm/themes/blood/colors.xml b/indra/newview/skins/ansastorm/themes/blood/colors.xml
index 6bf84c5e92..a68adcd3ff 100644
--- a/indra/newview/skins/ansastorm/themes/blood/colors.xml
+++ b/indra/newview/skins/ansastorm/themes/blood/colors.xml
@@ -1175,4 +1175,16 @@
+
+
+
+
diff --git a/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml b/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml
index 4b4768c682..19a7c6591b 100644
--- a/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml
+++ b/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml
@@ -1394,4 +1394,16 @@
+
+
+
+
diff --git a/indra/newview/skins/ansastorm/themes/ectoplasma/colors.xml b/indra/newview/skins/ansastorm/themes/ectoplasma/colors.xml
index 510fe7c119..461399ee4e 100644
--- a/indra/newview/skins/ansastorm/themes/ectoplasma/colors.xml
+++ b/indra/newview/skins/ansastorm/themes/ectoplasma/colors.xml
@@ -1163,4 +1163,16 @@
+
+
+
+
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 52594a1a6a..81a524b4c7 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -1351,4 +1351,16 @@
+
+
+
+
diff --git a/indra/newview/skins/default/xui/de/floater_fs_partial_inventory.xml b/indra/newview/skins/default/xui/de/floater_fs_partial_inventory.xml
new file mode 100644
index 0000000000..34237aefd6
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_fs_partial_inventory.xml
@@ -0,0 +1,5 @@
+
+
+ Inventar: [FOLDERNAME]
+
+
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 2987fcd3af..0b96d32e3c 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -146,7 +146,7 @@
Flächen ausgewählt: [FACES_STRING]
- [secondlife:///app/openfloater/object_weights Mehr Infos]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Mehr Infos]
Physikgewicht [PHYS_WEIGHT], Darstellungskosten [DISP_WEIGHT].
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index 7f2a1229cb..ddfd6a1cf1 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -120,6 +120,7 @@
+
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 6e7026c426..8b1b61f9db 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -4341,7 +4341,7 @@ Sie ist voll oder startet in Kürze neu.
Sie können die Form eines Mesh-Objekts nicht ändern.
- Sie können diese Region nicht betreten, \nda die Region voll ist.
+ Sie können diese Region nicht betreten, da die Region voll ist.
Verknüpfungsfehler – Eigentümer sind unterschiedlich
@@ -4645,7 +4645,7 @@ Wählen Sie eine kleinere Landfläche aus.
Passkauf momentan nicht möglich. Versuchen Sie es später erneut.
- Objekt kann nicht erstellt werden, \nda die Parzelle voll ist.
+ Objekt kann nicht erstellt werden, da die Parzelle voll ist.
Objekt konnte nicht an festgelegtem Ort platziert werden. Versuchen Sie es erneut.
@@ -5578,7 +5578,7 @@ Falls Sie diesen Nutzungsbestimmungen nicht zustimmen, sollten keinerlei finanzi
Mehrfach-Import von Windlight abgeschlossen.
- Der Anhang „[NAME]“ enthält geriggtes Mesh, ist aber am HUD-Punkt „[HUD_POINT]“ angehängt. Das bedeutet, dass Sie es korrekt sehen werden, alle anderen werden es hingegen gar nicht sehen. Denken Sie darüber nach, den Anhang zu entfernen und an einem regulären Punkt am Körper anzuhängen.
+ Der Anhang „[NAME]“ enthält geriggtes Mesh, ist aber am HUD-Punkt „[HUD_POINT]“ angehängt. Geriggte Meshes an HUD-Punkten sind nicht sichtbar, weder für Sie selbst noch für andere. Denken Sie darüber nach, den Anhang zu entfernen und an einem regulären Punkt am Körper anzuhängen.
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_UI.xml b/indra/newview/skins/default/xui/de/panel_preferences_UI.xml
index fea2838de5..d5ca407008 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_UI.xml
@@ -263,6 +263,23 @@ Standard 0. Größere Werte können nicht korrekt funktionieren.
Pixel (Erfordert Neustart)
[VIEWER_GENERATION]-Standard 20. Viewer 1-Standard 18.
+
+ Schrift für Notizkarten:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml
index fade06447b..5a090bd586 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml
@@ -206,6 +206,26 @@
Farbe für Markierung der Umgebungssuche:
+
+
+ Farben für Notizkarten:
+
+
+ Text:
+
+
+
+ Hintergrund:
+
+
+
+ Cursor:
+
+
+
+ Auswahl:
+
+
diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml
index 561051a5b0..2c91021deb 100644
--- a/indra/newview/skins/default/xui/de/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_general.xml
@@ -19,8 +19,8 @@
Grid-Position:
-
-
+
+
Typ:
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 4f3ae2e517..802e2f4ee9 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -5461,10 +5461,10 @@ Falls der Fehler weiterhin auftritt, überprüfen Sie bitte Ihre Netzwerk- und F
Meine Premium-Mitgliedschaft
- Ausgewählte Objekte löschen?
+ Ausgewählte [COUNT_SELECTION] Objekte löschen ([COUNT_TOTAL] insgesamt)?
- Ausgewähltes Objekt löschen?
+ Ausgewähltes Objekt löschen ([COUNT_TOTAL] insgesamt)?
Keine Objekte in diesem Outfit
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 74729a2158..ad13ffcc07 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -165,7 +165,7 @@ Additional code generously contributed to Firestorm by:
top_pad="4"
width="450"
wrap="true">
-Albatroz Hird, Alexie Birman, Andromeda Rage, Angeldark Raymaker, Angus Boyd, Animats, Armin Weatherwax, Beq Janus, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Denver Maksim, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hitomi Tiponi, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, Mister Acacia, MorganMegan, mygoditsfullofstars, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, Paladin Forzane, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, Zwagoth Klaar and others.
+Albatroz Hird, Alexie Birman, Andromeda Rage, Angeldark Raymaker, Angus Boyd, Animats, Armin Weatherwax, Beq Janus, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Denver Maksim, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hitomi Tiponi, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, Mister Acacia, MorganMegan, Morgan Pennent, mygoditsfullofstars, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, Paladin Forzane, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, Zwagoth Klaar and others.
diff --git a/indra/newview/skins/default/xui/en/floater_fs_partial_inventory.xml b/indra/newview/skins/default/xui/en/floater_fs_partial_inventory.xml
new file mode 100644
index 0000000000..3f40d1c755
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_fs_partial_inventory.xml
@@ -0,0 +1,34 @@
+
+
+ Inventory: [FOLDERNAME]
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
index 6024086167..c92e4224f7 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -60,6 +60,11 @@
name="desc"
width="296" />
- [secondlife:///app/openfloater/object_weights More info]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
-
-
-
-
-
+
+
+
+
fail
-You can't enter this region because \nthe region is full.
+You can't enter this region because the region is full.
fail
-Can't create object because \nthe parcel is full.
+Can't create object because the parcel is full.
-An attachment named "[NAME]" contains rigged mesh but is attached to the HUD point "[HUD_POINT]". This means you will see it rendered correctly, but everyone else is not going to be able see it at all. You might want to consider taking it off and re-attaching it to a regular body attachment point.
+An attachment named "[NAME]" contains rigged mesh but is attached to the HUD point "[HUD_POINT]". Rigged meshes attached to HUD points won't be visible at all - neither for you nor for anybody else. You might want to consider taking it off and re-attaching it to a regular body attachment point.
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index d8b2cc9058..dbc1b32401 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -8,6 +8,7 @@
top="19"
left="0"
follows="left|top|right"
+ focus_root="true"
height="39"
layout="topleft"
name="navigation_bar"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_UI.xml b/indra/newview/skins/default/xui/en/panel_preferences_UI.xml
index 7be2f8a03b..1265fa048a 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_UI.xml
@@ -1725,6 +1725,49 @@ Default 0. Larger values may not work well.
[VIEWER_GENERATION] default 20. Viewer 1 default 18.
+
+ Notecard Editor Font:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- Delete selected items?
- Delete selected item?
+ Delete selected [COUNT_SELECTION] items ([COUNT_TOTAL]] total)?
+ Delete selected item ([COUNT_TOTAL]] total)?
There are no items in this outfit
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index e292fd9cf1..4d447090b3 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -4146,7 +4146,7 @@ Prueba otra vez dentro de un minuto.
No se puede cambiar la forma de un objeto de la malla
- No puedes entrar en esta región porque \nla región está llena.
+ No puedes entrar en esta región porque la región está llena.
Error de vínculo: los propietarios son diferentes
@@ -4447,7 +4447,7 @@ Prueba a seleccionar un terreno más pequeño.
No se puede comprar el pase ahora mismo. Vuelve a intentarlo más tarde.
- No se puede crear el objeto porque \nla parcela está llena.
+ No se puede crear el objeto porque la parcela está llena.
Error al colocar el objeto en el lugar especificado. Vuelve a intentarlo.
diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml
index 511b33baf8..11e9c3d235 100644
--- a/indra/newview/skins/default/xui/es/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_general.xml
@@ -19,8 +19,6 @@
Pos. en la red:
-
-
Tipo:
diff --git a/indra/newview/skins/default/xui/fr/floater_fs_partial_inventory.xml b/indra/newview/skins/default/xui/fr/floater_fs_partial_inventory.xml
new file mode 100644
index 0000000000..5f5064ffea
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_fs_partial_inventory.xml
@@ -0,0 +1,5 @@
+
+
+ Inventaire : [FOLDERNAME]
+
+
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 622c6f6aa0..434bb1317f 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -126,7 +126,7 @@
Aucune sélection effectuée.
- [secondlife:///app/openfloater/object_weights Plus d'infos]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Plus d'infos]
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index d2b0b13b4a..8740dcb2b9 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -83,6 +83,7 @@
+
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 3047ee8729..39560c0607 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -4638,7 +4638,7 @@ Elle est peut-être pleine ou sur le point de redémarrer.
Vous ne pouvez pas changer la forme d'un objet avec maillage.
- Vous ne pouvez pas pénétrer dans cette région car \ncar la région est pleine.
+ Vous ne pouvez pas pénétrer dans cette région car car la région est pleine.
Échec du lien -- les propriétaires sont différents
@@ -4942,7 +4942,7 @@ Veuillez sélectionner un terrain plus petit.
Impossible d'acheter le pass actuellement. Réessayez ultérieurement.
- Création de l'objet impossible car \nla parcelle est pleine.
+ Création de l'objet impossible car la parcelle est pleine.
Échec du placement de l'objet à l'emplacement spécifié. Veuillez réessayer.
@@ -5408,7 +5408,7 @@ Veuillez noter que "Utiliser l'environnement partagé" et "Basé sur le cycle jo
Superviseur d'animation Firestorm : [AO_MESSAGE]
- Un objet attaché "[NAME]" contient du mesh lié à l'avatar mais est attaché au point HUD "[HUD_POINT]". Cela signifie que vous le verrez correctement affiché, mais que les autres ne pourront pas le voir. Retirez et de réattachez à un point d'attachement normal du corps.
+ Un objet attaché "[NAME]" contient du mesh lié à l'avatar mais est attaché au point HUD "[HUD_POINT]". Les mesh liés à l'avatar attachés à un point HUD ne seront visibles ni par vous ni par les autres. Retirez et de réattachez à un point d'attachement normal du corps.
L'URL de l'écran d'accueil de connexion est remplacée à des fins de test.
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml b/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml
index 426befab8f..cedd1ef97f 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml
@@ -174,6 +174,15 @@
pixels (Redémarrage requis)
20 par défaut pour le [VIEWER_GENERATION], 18 pour le Viewer 1.
+
+ Police de l'éditeur de notices :
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml
index c546fe1ecd..a5d5ed732e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml
@@ -49,22 +49,22 @@
Hors de portée de cri
- Couleur selon le Viewer : (OpenSim/AuroraSim seulement)
+ Couleur selon la visionneuse : (OpenSim/AuroraSim seulement)
Quelles étiquettes voulez-vous voir ?
-
-
+
+
- Couleur de l'étiquette basé sur le Viewer ?
+ Couleur d'étiquette par visionneuse
-
-
+
+
- Liste prédéfinie pour les étiquettes de Viewer ?
+ Liste prédéf. d'étiquettes de visionneuse ?
@@ -95,6 +95,7 @@
Transparence des fenêtres :
+
Transparence de la console :
@@ -102,6 +103,25 @@
Couleur de la balise de recherche zonière :
+
+ Couleurs de la notice :
+
+
+ Texte:
+
+
+
+ Arrière-plan :
+
+
+
+ Curs. :
+
+
+
+ Sélection :
+
+
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
index 1d4041ad6b..08f50f5511 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml
@@ -2,12 +2,15 @@
Région :
inconnue
- ID du domaine :
- Version :
- inconnue
+ ID du domaine :
+
+ Type :
+ inconnu
Pos. dans la Grille :
- Type :
- inconnue
+
+
+ Version :
+ inconnue
@@ -19,7 +22,7 @@
- Classification :
+ Classification :
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index ceaad8d99e..40502c7b79 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -5379,10 +5379,10 @@ Si le problème persiste, vérifiez la configuration de votre réseau et de votr
Mon abonnement Premium
- Supprimer les articles sélectionnés ?
+ Supprimer les [COUNT_SELECTION] articles sélectionnés ([COUNT_TOTAL]] total) ?
- Supprimer l'article sélectionné ?
+ Supprimer l'article sélectionné ([COUNT_TOTAL]] total) ?
Cette tenue ne contient aucun article.
diff --git a/indra/newview/skins/default/xui/it/panel_region_general.xml b/indra/newview/skins/default/xui/it/panel_region_general.xml
index 7431f17803..aaf87a6c03 100644
--- a/indra/newview/skins/default/xui/it/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_general.xml
@@ -19,8 +19,8 @@
Pos. grid:
-
-
+
+
Tipo:
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index da8233e72c..e83e7193f2 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -4756,7 +4756,7 @@ Phoenix/Firestorm ビューワのサポート・グループへようこそ!
メッシュオブジェクトの形状を変更することはできません
- リージョンが埋まっているため、\nこのリージョンに入場できません。
+ リージョンが埋まっているため、このリージョンに入場できません。
リンクエラー -- 所有者が違います
@@ -5060,7 +5060,7 @@ Phoenix/Firestorm ビューワのサポート・グループへようこそ!
今すぐには入場許可を購入できません。後でもう一度お試しください。
- 区画が埋まっているため、オブジェクトを\n作成することができません。
+ 区画が埋まっているため、オブジェクトを 作成することができません。
指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 58b0b93604..d82a6f8f98 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -205,9 +205,6 @@
レンダリングその他:
-
diff --git a/indra/newview/skins/default/xui/pl/floater_fs_partial_inventory.xml b/indra/newview/skins/default/xui/pl/floater_fs_partial_inventory.xml
new file mode 100644
index 0000000000..ade3966320
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/floater_fs_partial_inventory.xml
@@ -0,0 +1,7 @@
+
+
+
+ Folder: [FOLDERNAME]
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
index accc98e2e4..997937111b 100644
--- a/indra/newview/skins/default/xui/pl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tools.xml
@@ -136,7 +136,7 @@
Zaznacz coś!
- [secondlife:///app/openfloater/object_weights Więcej]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Więcej]
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml
index 575ed402e2..a59f8c706b 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml
@@ -85,6 +85,7 @@
+
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index 72a525378e..98ae147ba6 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -4398,7 +4398,7 @@ Spróbuj ponownie za minutę.
Nie możesz zmieniać kształtu obiektu meszowego.
- Nie możesz wejść do tego regionu, \nponieważ jest pełny.
+ Nie możesz wejść do tego regionu, ponieważ jest pełny.
Scalanie nie powiodło się -- właściciele są różni
@@ -4706,7 +4706,7 @@ Spróbuj zaznaczyć mniejszy obszar ziemi.
Nie można w tej chwili kupić przepustki. Spróbuj ponownie później.
- Nie można utworzyć obiektu, \n ponieważ działka jest pełna.
+ Nie można utworzyć obiektu, ponieważ działka jest pełna.
Nie udało się umieścić obiektu w żądanej lokalizacji. Spróbuj ponownie.
@@ -5194,7 +5194,7 @@ Pamiętaj, że nie można wybrać "otoczenia współdzielonego" i "bazowanego na
- Dodatek o nazwie "[NAME]" zawiera riggowany mesz, ale jest dołączony do punktu HUD "[HUD_POINT]". Oznacza to, że Ty co prawda zobaczysz go poprawnie wyrenderowany, ale wszyscy inni nie będą mogli. Rozważ zdjęcie go i ponowne dołączenie do zwykłego punktu doczepienia.
+ Dodatek o nazwie "[NAME]" zawiera riggowany mesz, ale jest dołączony do punktu HUD "[HUD_POINT]". Riggowane mesze dołączone do punktów HUD nie są w ogóle widoczne - ani dla Ciebie, ani dla nikogo innego. Rozważ zdjęcie go i ponowne dołączenie do zwykłego punktu doczepienia.
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_UI.xml b/indra/newview/skins/default/xui/pl/panel_preferences_UI.xml
index 858865ebc2..3af557db57 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_UI.xml
@@ -249,6 +249,15 @@ Domyślnie 0. Większa wartość może sprawiać kłopoty.
pikseli (wymaga restartu)
[VIEWER_GENERATION] domyślnie 20. V1 domyślnie 18.
+
+ Czcionka edytora notek:
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml b/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml
index ad1d14220b..0e3d3398a3 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml
@@ -197,13 +197,32 @@
- Podśw. wyników wyszukiwania w opcjach:
+ Wyniki wyszukiwania w opcjach:
Emiter śledzenia (np. przeszukiwania obszaru):
+
+ Kolory notek:
+
+
+ Tekst:
+
+
+
+ Tło:
+
+
+
+ Kursor:
+
+
+
+ Zaznaczenie:
+
+
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml
index 239511a7e6..0c37e212f0 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_general.xml
@@ -16,8 +16,6 @@
Pozycja siatki:
-
-
Wersja:
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 6a55a5b910..ea9b45125f 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -5135,10 +5135,10 @@ Jeśli problemy będą występowały nadal, proszę sprawdź sieć i ustawienia
Moje członkostwo Premium
- Usunąć zaznaczone obiekty?
+ Usunąć [COUNT_SELECTION] zaznaczonych obiektów ([COUNT_TOTAL]] łącznie)?
- Usunąć zaznaczony obiekt?
+ Usunąć zaznaczony obiekt ([COUNT_TOTAL]] łącznie)?
W tym stroju nie ma elementów
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 58c93741e8..c48b920b21 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -3956,7 +3956,7 @@ Tente novamente em instantes.
Você não pode alterar a forma de um objeto mesh
- Você não pode entrar nesta região porque \nela está cheia.
+ Você não pode entrar nesta região porque ela está cheia.
Falha na vinculação -- proprietários diferentes
@@ -4257,7 +4257,7 @@ Tente selecionar uma quantidade menor de terreno.
Não é possível comprar passe no momento. Tente novamente mais tarde.
- Não é possível criar objeto porque \no lote está cheio.
+ Não é possível criar objeto porque o lote está cheio.
Falha ao posicionar objeto em local específico. Tente novamente.
diff --git a/indra/newview/skins/default/xui/ru/floater_fs_partial_inventory.xml b/indra/newview/skins/default/xui/ru/floater_fs_partial_inventory.xml
new file mode 100644
index 0000000000..3ece6e7f5a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_fs_partial_inventory.xml
@@ -0,0 +1,5 @@
+
+
+ Инвентарь: [FOLDERNAME]
+
+
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml
index 370c5a76e9..8e35680924 100644
--- a/indra/newview/skins/default/xui/ru/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml
@@ -10,7 +10,6 @@
-
@@ -85,6 +84,8 @@
+
+
@@ -92,7 +93,6 @@
-
@@ -114,7 +114,6 @@
-
@@ -125,7 +124,8 @@
-
+
+
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index ee1e905dae..a4bc0d9416 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -4514,7 +4514,7 @@ https://wiki.firestormviewer.org/fs_voice
Не разрешается изменять форму меш-объекта
- Вам нет доступа в этот регион: \nрегион заполнен.
+ Вам нет доступа в этот регион: регион заполнен.
Связь невозможна -- разные владельцы
@@ -4818,7 +4818,7 @@ https://wiki.firestormviewer.org/fs_voice
Сейчас нельзя купить пропуск. Повторите попытку позже.
- Невозможно создать объект:\nучасток заполнен.
+ Невозможно создать объект: участок заполнен.
Не удалось поместить объект в указанное место. Повторите попытку.
@@ -5304,7 +5304,7 @@ https://wiki.firestormviewer.org/fs_voice
- Предмет с названием "[NAME]" является ригованым мешем, но прикреплен на экран в "[HUD_POINT]". Это значит, что для вас он будет отображаться правильно, но все остальные вообще не смогут его увидеть. Возможно, вы захотите снять его и снова прикрепить к обычной точке крепления на теле.
+ Предмет с названием "[NAME]" является ригованым мешем, но прикреплен на экран в "[HUD_POINT]". Ригованные меши прикрепленные на экран вообще не будут видны - ни вам, ни кому-либо другому. Возможно, вы захотите снять его и снова прикрепить к обычной точке крепления на теле.
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_UI.xml b/indra/newview/skins/default/xui/ru/panel_preferences_UI.xml
index f958fe38ca..31c67b5c69 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_UI.xml
@@ -254,6 +254,18 @@
пикселей (необходим перезапуск)
[VIEWER_GENERATION] по умолчанию 20. V1 по умолчанию 18.
+
+ Шрифт Редактора Заметок:
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
index 479e3e1ab9..1f43fb86cb 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
@@ -204,10 +204,30 @@
Цвет подсветки поиска в настройках:
+
Цвет маяка зоны поиска:
-
+
+
+ Цвета Заметок:
+
+
+ Текст:
+
+
+
+ Фон:
+
+
+
+ Курсор:
+
+
+
+ Выделение:
+
+
diff --git a/indra/newview/skins/default/xui/ru/panel_region_general.xml b/indra/newview/skins/default/xui/ru/panel_region_general.xml
index bd2b2f175b..35cdfc4337 100644
--- a/indra/newview/skins/default/xui/ru/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_region_general.xml
@@ -18,8 +18,8 @@
Позиция сетки:
-
-
+
+
Версия:
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index e201fd1e49..c7c502c360 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -5384,10 +5384,10 @@ https://www.firestormviewer.org/support за помощь в решении эт
Мое Премиум-членство
- Удалить выбранные объекты?
+ Удалить выбранные [COUNT_SELECTION] объекты? ([COUNT_TOTAL]] всего)
- Удалить выбранный объект?
+ Удалить выбранный объект? ([COUNT_TOTAL]] всего)
Для этого комплекта одежды нет вещей
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index 40c40cb994..43cc973b64 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -4061,7 +4061,7 @@ Lütfen bir dakika sonra tekrar deneyin.
Bir örgü nesnesinin şeklini değiştiremezsiniz
- Bu bölgeye giremezsiniz çünkü \nbölge dolu.
+ Bu bölgeye giremezsiniz çünkü bölge dolu.
Bağlantı başarısız oldu -- sahipler farklı
@@ -4362,7 +4362,7 @@ Daha küçük bir arazi parçası seçmeyi deneyin.
Şu anda geçiş hakkı satın alınamıyor. Daha sonra tekrar deneyin.
- Nesne oluşturulamıyor çünkü \nparsel dolu.
+ Nesne oluşturulamıyor çünkü parsel dolu.
Belirtilen konuma nesne yerleştirilemedi. Lütfen tekrar deneyin.
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 59eb1110d8..d6f8070192 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -3929,7 +3929,7 @@ SHA1 指紋:[MD5_DIGEST]
網面物件的形狀不得變更。
- 你無法進入這地區,\n因為地區滿載。
+ 你無法進入這地區,因為地區滿載。
聯結失敗——所有人不同
@@ -4230,7 +4230,7 @@ SHA1 指紋:[MD5_DIGEST]
此時無法購買通行權。 請稍候再試一次。
- 無法建立物件,\n地段滿載。
+ 無法建立物件,地段滿載。
無法將物件置於指定地點。 請再試一次。
diff --git a/indra/newview/skins/firestorm/colors.xml b/indra/newview/skins/firestorm/colors.xml
index 21fcb51cdb..42ce11cb63 100644
--- a/indra/newview/skins/firestorm/colors.xml
+++ b/indra/newview/skins/firestorm/colors.xml
@@ -878,4 +878,16 @@
+
+
+
+
diff --git a/indra/newview/skins/firestorm/themes/blue/colors.xml b/indra/newview/skins/firestorm/themes/blue/colors.xml
index adab6f5859..76f2336c5f 100644
--- a/indra/newview/skins/firestorm/themes/blue/colors.xml
+++ b/indra/newview/skins/firestorm/themes/blue/colors.xml
@@ -629,4 +629,16 @@
+
+
+
+
diff --git a/indra/newview/skins/firestorm/themes/ctrlaltstudio/colors.xml b/indra/newview/skins/firestorm/themes/ctrlaltstudio/colors.xml
index 760fb414a2..16e8fd4681 100644
--- a/indra/newview/skins/firestorm/themes/ctrlaltstudio/colors.xml
+++ b/indra/newview/skins/firestorm/themes/ctrlaltstudio/colors.xml
@@ -889,4 +889,16 @@
+
+
+
+
diff --git a/indra/newview/skins/firestorm/themes/dark/colors.xml b/indra/newview/skins/firestorm/themes/dark/colors.xml
index ab0602bc76..107aa05084 100644
--- a/indra/newview/skins/firestorm/themes/dark/colors.xml
+++ b/indra/newview/skins/firestorm/themes/dark/colors.xml
@@ -94,4 +94,16 @@
+
+
+
+
diff --git a/indra/newview/skins/firestorm/themes/highcontrast/colors.xml b/indra/newview/skins/firestorm/themes/highcontrast/colors.xml
index 242da677a2..f9aaaab5b9 100644
--- a/indra/newview/skins/firestorm/themes/highcontrast/colors.xml
+++ b/indra/newview/skins/firestorm/themes/highcontrast/colors.xml
@@ -903,4 +903,16 @@
+
+
+
+
diff --git a/indra/newview/skins/metaharper/colors.xml b/indra/newview/skins/metaharper/colors.xml
index b52c6e31e5..51a728b80a 100644
--- a/indra/newview/skins/metaharper/colors.xml
+++ b/indra/newview/skins/metaharper/colors.xml
@@ -849,4 +849,16 @@
+
+
+
+
diff --git a/indra/newview/skins/metaharper/themes/appalachian_sky/colors.xml b/indra/newview/skins/metaharper/themes/appalachian_sky/colors.xml
index e969bf6f97..e113de18d5 100644
--- a/indra/newview/skins/metaharper/themes/appalachian_sky/colors.xml
+++ b/indra/newview/skins/metaharper/themes/appalachian_sky/colors.xml
@@ -844,4 +844,16 @@
+
+
+
+
diff --git a/indra/newview/skins/metaharper/themes/black_glass/colors.xml b/indra/newview/skins/metaharper/themes/black_glass/colors.xml
index 295f1f3fe8..7854ca556d 100755
--- a/indra/newview/skins/metaharper/themes/black_glass/colors.xml
+++ b/indra/newview/skins/metaharper/themes/black_glass/colors.xml
@@ -850,4 +850,16 @@
+
+
+
+
diff --git a/indra/newview/skins/metaharper/themes/cool_ocean/colors.xml b/indra/newview/skins/metaharper/themes/cool_ocean/colors.xml
index 1cb1592405..62ae4b3a31 100644
--- a/indra/newview/skins/metaharper/themes/cool_ocean/colors.xml
+++ b/indra/newview/skins/metaharper/themes/cool_ocean/colors.xml
@@ -874,4 +874,16 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/colors.xml b/indra/newview/skins/starlight/colors.xml
index 5cd6debdd4..2bc43f6c6a 100755
--- a/indra/newview/skins/starlight/colors.xml
+++ b/indra/newview/skins/starlight/colors.xml
@@ -1110,5 +1110,17 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/themes/mono_teal/colors.xml b/indra/newview/skins/starlight/themes/mono_teal/colors.xml
index ce3f1f3323..71a762aaff 100755
--- a/indra/newview/skins/starlight/themes/mono_teal/colors.xml
+++ b/indra/newview/skins/starlight/themes/mono_teal/colors.xml
@@ -1162,4 +1162,16 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/themes/nostalgia_blue/colors.xml b/indra/newview/skins/starlight/themes/nostalgia_blue/colors.xml
index 40c419215d..ad63415a69 100755
--- a/indra/newview/skins/starlight/themes/nostalgia_blue/colors.xml
+++ b/indra/newview/skins/starlight/themes/nostalgia_blue/colors.xml
@@ -1108,5 +1108,17 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/themes/original_orange/colors.xml b/indra/newview/skins/starlight/themes/original_orange/colors.xml
index b091e6016e..66258f0e8b 100755
--- a/indra/newview/skins/starlight/themes/original_orange/colors.xml
+++ b/indra/newview/skins/starlight/themes/original_orange/colors.xml
@@ -1107,5 +1107,17 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/themes/original_teal/colors.xml b/indra/newview/skins/starlight/themes/original_teal/colors.xml
index 83c4ec9de9..a55be0e417 100755
--- a/indra/newview/skins/starlight/themes/original_teal/colors.xml
+++ b/indra/newview/skins/starlight/themes/original_teal/colors.xml
@@ -1108,5 +1108,17 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/themes/silver_blue/colors.xml b/indra/newview/skins/starlight/themes/silver_blue/colors.xml
index 0a70f9d283..5db03a3774 100755
--- a/indra/newview/skins/starlight/themes/silver_blue/colors.xml
+++ b/indra/newview/skins/starlight/themes/silver_blue/colors.xml
@@ -1166,4 +1166,16 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/themes/silver_pink/colors.xml b/indra/newview/skins/starlight/themes/silver_pink/colors.xml
index 34b9d57a10..6eeb02caa8 100755
--- a/indra/newview/skins/starlight/themes/silver_pink/colors.xml
+++ b/indra/newview/skins/starlight/themes/silver_pink/colors.xml
@@ -1163,4 +1163,16 @@
+
+
+
+
diff --git a/indra/newview/skins/starlight/xui/en/floater_tools.xml b/indra/newview/skins/starlight/xui/en/floater_tools.xml
index b8d8f8dcc0..0b8542ecde 100644
--- a/indra/newview/skins/starlight/xui/en/floater_tools.xml
+++ b/indra/newview/skins/starlight/xui/en/floater_tools.xml
@@ -830,6 +830,22 @@
width="100">
Nothing selected.
+
- [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
-
- Paste Position
+
+Paste Position
[VALUE]
-
- Paste Size
+
+Paste Size
[VALUE]
-
- Paste Rotation
+
+Paste Rotation
[VALUE]
-
- Object Parameters:
-
-
-
+
+
+ width="149">
Mesh Information:
@@ -2628,7 +2622,7 @@ Lowest:
left="125"
halign="left"
name="LOD_swap_label"
- top_pad="3"
+ top_pad="3"
value="LOD Swap"
visible="false"
width="60" />
@@ -2654,7 +2648,7 @@ Lowest:
name="LOD_swap_fs_default"
top_delta="0"
visible="false"
- width="30">
+ width="30" >
[APP_NAME_ABBR]
[FACTOR]
@@ -2795,6 +2789,34 @@ Low ↔ Lwst
tool_tip="Allows object to flex about the Z axis (Client-side only)"
top_pad="5"
width="121" />
+
+
Physics Shape Type:
@@ -3051,7 +3073,7 @@ Low ↔ Lwst
layout="topleft"
name="material"
top_pad="5"
- width="150"
+ width="134"
left="144">
+
+
+
+
diff --git a/indra/newview/skins/starlightcui/themes/custom_dark/colors.xml b/indra/newview/skins/starlightcui/themes/custom_dark/colors.xml
index 72328f968c..5585c9638f 100755
--- a/indra/newview/skins/starlightcui/themes/custom_dark/colors.xml
+++ b/indra/newview/skins/starlightcui/themes/custom_dark/colors.xml
@@ -1126,5 +1126,17 @@
+
+
+
+
diff --git a/indra/newview/skins/starlightcui/themes/custom_light/colors.xml b/indra/newview/skins/starlightcui/themes/custom_light/colors.xml
index 417d97de02..658c3abda9 100755
--- a/indra/newview/skins/starlightcui/themes/custom_light/colors.xml
+++ b/indra/newview/skins/starlightcui/themes/custom_light/colors.xml
@@ -1181,4 +1181,16 @@
+
+
+
+
diff --git a/indra/newview/skins/starlightcui/xui/en/floater_tools.xml b/indra/newview/skins/starlightcui/xui/en/floater_tools.xml
index b8d8f8dcc0..0b8542ecde 100644
--- a/indra/newview/skins/starlightcui/xui/en/floater_tools.xml
+++ b/indra/newview/skins/starlightcui/xui/en/floater_tools.xml
@@ -830,6 +830,22 @@
width="100">
Nothing selected.
+
- [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
-
- Paste Position
+
+Paste Position
[VALUE]
-
- Paste Size
+
+Paste Size
[VALUE]
-
- Paste Rotation
+
+Paste Rotation
[VALUE]
-
- Object Parameters:
-
-
-
+
+
+ width="149">
Mesh Information:
@@ -2628,7 +2622,7 @@ Lowest:
left="125"
halign="left"
name="LOD_swap_label"
- top_pad="3"
+ top_pad="3"
value="LOD Swap"
visible="false"
width="60" />
@@ -2654,7 +2648,7 @@ Lowest:
name="LOD_swap_fs_default"
top_delta="0"
visible="false"
- width="30">
+ width="30" >
[APP_NAME_ABBR]
[FACTOR]
@@ -2795,6 +2789,34 @@ Low ↔ Lwst
tool_tip="Allows object to flex about the Z axis (Client-side only)"
top_pad="5"
width="121" />
+
+
Physics Shape Type:
@@ -3051,7 +3073,7 @@ Low ↔ Lwst
layout="topleft"
name="material"
top_pad="5"
- width="150"
+ width="134"
left="144">
+
+
+
+
diff --git a/indra/newview/skins/vintage/xui/en/floater_tools.xml b/indra/newview/skins/vintage/xui/en/floater_tools.xml
index 1029df0290..eda1ac3be8 100644
--- a/indra/newview/skins/vintage/xui/en/floater_tools.xml
+++ b/indra/newview/skins/vintage/xui/en/floater_tools.xml
@@ -872,7 +872,7 @@
top_pad="-5"
visible="false"
width="280">
- [secondlife:///app/openfloater/object_weights More info]
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
Properly name OS version, also add Phoenix- in front of installer name
#installer_file = self.installer_base_name() + '_Setup.exe'
- installer_file = "Phoenix-%(app_name)s-%(version_dashes)s_Setup.exe" % substitution_strings
+ installer_file = self.fs_installer_basename() + "_Setup.exe"
#
substitution_strings['installer_file'] = installer_file
@@ -1622,8 +1623,11 @@ class DarwinManifest(ViewerManifest):
volname=CHANNEL_VENDOR_BASE+" Installer" # DO NOT CHANGE without understanding comment above
- imagename = self.installer_base_name()
-
+ # Make sure all our package names look similar
+ #imagename = self.installer_base_name()
+ imagename = self.fs_installer_basename()
+ #
+
sparsename = imagename + ".sparseimage"
finalname = imagename + ".dmg"
# make sure we don't have stale files laying about
@@ -2075,9 +2079,9 @@ class LinuxManifest(ViewerManifest):
def package_finish(self):
# a standard map of strings for replacing in the templates
- installer_name_components = ['Phoenix',self.app_name(),self.args.get('arch'),'.'.join(self.args['version'])]
- installer_name = "_".join(installer_name_components)
+
#installer_name = self.installer_base_name()
+ installer_name = self.fs_installer_basename()
self.fs_save_breakpad_symbols("linux")
self.fs_delete_linux_symbols() # Delete old syms
diff --git a/indra/test/lldoubledispatch_tut.cpp b/indra/test/lldoubledispatch_tut.cpp
index ad8f6454d4..e38d0e92a3 100644
--- a/indra/test/lldoubledispatch_tut.cpp
+++ b/indra/test/lldoubledispatch_tut.cpp
@@ -135,10 +135,10 @@ namespace tut
// Instantiate a few GameObjects. Make sure we refer to them
// polymorphically, and don't let them leak.
- std::auto_ptr home;
- std::auto_ptr obstacle;
- std::auto_ptr tug;
- std::auto_ptr patrol;
+ std::unique_ptr home;
+ std::unique_ptr obstacle;
+ std::unique_ptr tug;
+ std::unique_ptr patrol;
// prototype objects
Asteroid dummyAsteroid;
diff --git a/scripts/configure_firestorm.sh b/scripts/configure_firestorm.sh
index 3f92c1b439..353c760f9e 100755
--- a/scripts/configure_firestorm.sh
+++ b/scripts/configure_firestorm.sh
@@ -50,7 +50,7 @@ LL_ARGS_PASSTHRU=""
JOBS="0"
WANTS_NINJA=$FALSE
WANTS_VSCODE=$FALSE
-USE_VSTOOL=$TRUE
+USE_VSTOOL=$FALSE
TESTBUILD_PERIOD="0"
SINGLEGRID_URI=""
@@ -88,7 +88,7 @@ showUsage()
echo " --ninja : Build using Ninja"
echo " --vscode : Exports compile commands for VSCode (Linux only)"
echo " --compiler-cache : Try to detect and use compiler cache (needs also --ninja for OSX and Windows)"
- echo " --no-vstools : Do not use vstool to setup project startup properties (windows only)"
+ echo " --vstools : Use vstool to setup project startup properties (Windows only)"
echo
echo "All arguments not in the above list will be passed through to LL's configure/build."
echo
@@ -98,7 +98,7 @@ getArgs()
# $* = the options passed in from main
{
if [ $# -gt 0 ]; then
- while getoptex "clean build config version package no-package fmodstudio openal ninja vscode compiler-cache no-vstools jobs: platform: kdu opensim no-opensim singlegrid: avx avx2 tracy crashreporting testbuild: help chan: btype:" "$@" ; do
+ while getoptex "clean build config version package no-package fmodstudio openal ninja vscode compiler-cache vstools jobs: platform: kdu opensim no-opensim singlegrid: avx avx2 tracy crashreporting testbuild: help chan: btype:" "$@" ; do
#ensure options are valid
if [ -z "$OPTOPT" ] ; then
@@ -138,7 +138,7 @@ getArgs()
ninja) WANTS_NINJA=$TRUE;;
vscode) WANTS_VSCODE=$TRUE;;
compiler-cache) WANTS_CACHE=$TRUE;;
- no-vstools) USE_VSTOOL=$FALSE;;
+ vstools) USE_VSTOOL=$TRUE;;
help) showUsage && exit 0;;
@@ -578,7 +578,7 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then
cmake -G "$TARGET" ../indra $CHANNEL ${GITHASH} $FMODSTUDIO $OPENAL $KDU $OPENSIM $SINGLEGRID $AVX_OPTIMIZATION $AVX2_OPTIMIZATION $TRACY_PROFILER $TESTBUILD $PACKAGE \
$UNATTENDED -DLL_TESTS:BOOL=OFF -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DCMAKE_BUILD_TYPE:STRING=$BTYPE $CACHE_OPT \
- $CRASH_REPORTING -DVIEWER_SYMBOL_FILE:STRING="${VIEWER_SYMBOL_FILE:-}" -DROOT_PROJECT_NAME:STRING=Firestorm $LL_ARGS_PASSTHRU ${VSCODE_FLAGS:-} | tee $LOG
+ $CRASH_REPORTING -DVIEWER_SYMBOL_FILE:STRING="${VIEWER_SYMBOL_FILE:-}" $LL_ARGS_PASSTHRU ${VSCODE_FLAGS:-} | tee $LOG
if [ $TARGET_PLATFORM == "windows" -a $USE_VSTOOL -eq $TRUE ] ; then
echo "Setting startup project via vstool"