diff --git a/autobuild.xml b/autobuild.xml
index 74f0f97943..16b750a2b7 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -27,9 +27,9 @@
archive
name
windows
@@ -1693,11 +1693,11 @@
archive
name
darwin
diff --git a/indra/newview/fslslpreproc.cpp b/indra/newview/fslslpreproc.cpp
index 147f7bc5b4..7ed316b3e0 100644
--- a/indra/newview/fslslpreproc.cpp
+++ b/indra/newview/fslslpreproc.cpp
@@ -913,16 +913,19 @@ static void subst_lazy_references(std::string& script, std::string retype, std::
static std::string reformat_lazy_lists(std::string script)
{
script = boost::regex_replace(script, boost::regex(rDOT_MATCHES_NEWLINE
- rCMNT_OR_STR "|"
+ rCMNT_OR_STR
+ // exclude some keywords as possible identifiers that can
+ // be followed by an opening square bracket (FIRE-20278)
+ "|(?:return|do|else)(?![A-Za-z0-9_])"
// group 1: identifier
- "([a-zA-Z_][a-zA-Z0-9_]*+)" rOPT_SPC
+ "|([a-zA-Z_][a-zA-Z0-9_]*+)" rOPT_SPC
// group 2: expression within brackets
"\\[((?:" rCMNT_OR_STR
// group 3: recursive bracketed expression
"|(\\[(?:" rCMNT_OR_STR "|[^][]|(?3))*+\\])" // recursive bracketed expression (e.g. []!=[])
"|[^][]" // or anything else
- ")+?)\\]" rOPT_SPC // non-greedy
- "=" rOPT_SPC
+ ")++)\\]" rOPT_SPC
+ "=(?!=)" rOPT_SPC // = but not ==
// group 4: right-hand side expression
"((?:" rCMNT_OR_STR
// group 5: recursive parenthesized expression
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 0b6f4622d8..932dd6e7ce 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -6937,7 +6937,7 @@ void LLWearableBridge::openItem()
performAction(getInventoryModel(),
// FIRE-17166: Add Clothes on Double Click
//get_is_item_worn(mUUID) ? "take_off" : "wear");
- get_is_item_worn(mUUID) ? "take_off" : (mAssetType == LLAssetType::AT_BODYPART || !gSavedSettings.getBOOL("FSDoubleClickAddInventoryClothing") ? "wear" : "wear_add"));
+ get_is_item_worn(mUUID) ? "take_off" : (mAssetType == LLAssetType::AT_BODYPART || (mAssetType == LLAssetType::AT_CLOTHING && mWearableType == LLWearableType::WT_PHYSICS) || !gSavedSettings.getBOOL("FSDoubleClickAddInventoryClothing") ? "wear" : "wear_add"));
//
}
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 9868606b22..3a79477caa 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -450,6 +450,11 @@ BOOL LLStatusBar::postBuild()
mBalancePanel = getChild("balance_bg");
mTimeMediaPanel = getChild("time_and_media_bg");
+ mFilterEdit = getChild("search_menu_edit");
+ mSearchPanel = getChild("menu_search_panel");
+ mFPSText = getChild("FPSText");
+ mVolumeIconsWidth = mBtnVolume->getRect().mRight - mStreamToggle->getRect().mLeft;
+
initParcelIcons();
mParcelChangedObserver = new LLParcelChangeObserver(this);
@@ -479,8 +484,6 @@ BOOL LLStatusBar::postBuild()
}
// Hook up and init for filtering
- mFilterEdit = getChild("search_menu_edit");
- mSearchPanel = getChild("menu_search_panel");
mSearchPanel->setVisible(gSavedSettings.getBOOL("FSMenuSearch"));
mFilterEdit->setKeystrokeCallback(boost::bind(&LLStatusBar::onUpdateFilterTerm, this));
mFilterEdit->setCommitCallback(boost::bind(&LLStatusBar::onUpdateFilterTerm, this));
@@ -489,7 +492,6 @@ BOOL LLStatusBar::postBuild()
//
// FIRE-14482: Show FPS in status bar
- mFPSText = getChild("FPSText");
gSavedSettings.getControl("FSStatusBarShowFPS")->getSignal()->connect(boost::bind(&LLStatusBar::onShowFPSChanged, this, _2));
if (!gSavedSettings.getBOOL("FSStatusBarShowFPS"))
{
@@ -498,7 +500,6 @@ BOOL LLStatusBar::postBuild()
//
// Option to hide volume controls (sounds, media, stream) in upper right
- mVolumeIconsWidth = mBtnVolume->getRect().mRight - mStreamToggle->getRect().mLeft;
if (!gSavedSettings.getBOOL("FSEnableVolumeControls"))
{
updateVolumeControlsVisibility(LLSD(FALSE));