diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index de9b687688..f223d38106 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -394,7 +394,7 @@ void LLAvatarList::refresh()
// FIRE-12750: Name filter not working correctly
//if (!have_filter || findInsensitive(av_name.getDisplayName(), mNameFilter))
- if (!have_filter || findInsensitive(getNameForDisplay(av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
+ if (!have_filter || findInsensitive(getNameForDisplay(buddy_id, av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
//
{
if (nadded >= ADD_LIMIT)
@@ -450,7 +450,7 @@ void LLAvatarList::refresh()
have_names &= LLAvatarNameCache::get(buddy_id, &av_name);
// FIRE-12750: Name filter not working correctly
//if (!findInsensitive(av_name.getDisplayName(), mNameFilter))
- if (!findInsensitive(getNameForDisplay(av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
+ if (!findInsensitive(getNameForDisplay(buddy_id, av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
//
{
removeItemByUUID(buddy_id);
@@ -526,7 +526,7 @@ bool LLAvatarList::filterHasMatches()
// FIRE-12750: Name filter not working correctly
//if (have_name && !findInsensitive(av_name.getDisplayName(), mNameFilter))
- if (have_name && !findInsensitive(getNameForDisplay(av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
+ if (have_name && !findInsensitive(getNameForDisplay(buddy_id, av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
//
{
continue;
@@ -742,20 +742,20 @@ void LLAvatarList::onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
// FIRE-12750: Name filter not working correctly
// static
-std::string LLAvatarList::getNameForDisplay(const LLAvatarName& av_name, bool show_displayname, bool show_username, bool rlv_check_shownames)
+std::string LLAvatarList::getNameForDisplay(const LLUUID& avatar_id, const LLAvatarName& av_name, bool show_displayname, bool show_username, bool rlv_check_shownames)
{
- bool fRlvFilter = (rlv_check_shownames) && (RlvActions::hasBehaviour(RLV_BHVR_SHOWNAMES));
+ bool fRlvCanShowName = (!rlv_check_shownames) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, avatar_id));
if (show_displayname && !show_username)
{
- return ( (!fRlvFilter) ? av_name.getDisplayName() : RlvStrings::getAnonym(av_name) );
+ return ( (fRlvCanShowName) ? av_name.getDisplayName() : RlvStrings::getAnonym(av_name) );
}
else if (!show_displayname && show_username)
{
- return ( (!fRlvFilter) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
+ return ( (fRlvCanShowName) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
}
- else
+ else
{
- return ( (!fRlvFilter) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name) );
+ return ( (fRlvCanShowName) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name) );
}
}
//
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 84c5fca005..924100a3f4 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -113,7 +113,7 @@ public:
// [/FS:CR]
// FIRE-12750: Name filter not working correctly
- static std::string getNameForDisplay(const LLAvatarName& av_name, bool show_displayname, bool show_username, bool rlv_check_shownames);
+ static std::string getNameForDisplay(const LLUUID& avatar_id, const LLAvatarName& av_name, bool show_displayname, bool show_username, bool rlv_check_shownames);
boost::signals2::connection setRefreshCompleteCallback(const commit_signal_t::slot_type& cb);
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index dd6eeed42b..5d4e59aad9 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -591,10 +591,11 @@ void LLAvatarListItem::onAvatarNameCache(const LLAvatarName& av_name)
// setAvatarName( (fRlvCanShowName) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
//else
// setAvatarName( (fRlvCanShowName) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name) );
- setAvatarName(LLAvatarList::getNameForDisplay(av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames));
+ setAvatarName(LLAvatarList::getNameForDisplay(mAvatarId, av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames));
- // NOTE: If you change this, you will break sorting the contacts list
- // by username unless you go change the comparator too. -- TS
+ // NOTE: If you change this, you will break sorting the contacts list
+ // by username unless you go change the comparator too. -- TS
+ setAvatarToolTip( (fRlvCanShowName) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
// TODO-RLVa: bit of a hack putting this here. Maybe find a better way?
mAvatarIcon->setDrawTooltip(fRlvCanShowName);
// [/RLVa:KB]
diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp
index 1375110ae6..23821f1fd5 100644
--- a/indra/newview/rlvcommon.cpp
+++ b/indra/newview/rlvcommon.cpp
@@ -35,6 +35,8 @@
#include "rlvlocks.h"
#include "llscriptruntimeperms.h"
+#include // icontains
+#include // regex_replace_all
#include
// ============================================================================
@@ -361,6 +363,12 @@ void RlvStrings::setCustomString(const std::string& strStringName, const std::st
bool RlvUtil::m_fForceTp = false;
+std::string escape_for_regex(const std::string& str)
+{
+ using namespace boost;
+ return regex_replace(str, regex("[.^$|()\\[\\]{}*+?\\\\]"), "\\\\&", match_default|format_sed);
+}
+
// Checked: 2009-07-04 (RLVa-1.0.0a) | Modified: RLVa-1.0.0a
void RlvUtil::filterLocation(std::string& strUTF8Text)
{
@@ -368,12 +376,12 @@ void RlvUtil::filterLocation(std::string& strUTF8Text)
LLWorld::region_list_t regions = LLWorld::getInstance()->getRegionList();
const std::string& strHiddenRegion = RlvStrings::getString(RLV_STRING_HIDDEN_REGION);
for (LLWorld::region_list_t::const_iterator itRegion = regions.begin(); itRegion != regions.end(); ++itRegion)
- boost::ireplace_all(strUTF8Text, (*itRegion)->getName(), strHiddenRegion);
+ boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + escape_for_regex((*itRegion)->getName()) + "\\b", boost::regex::icase), strHiddenRegion);
// Filter any mention of the parcel name
LLViewerParcelMgr* pParcelMgr = LLViewerParcelMgr::getInstance();
if (pParcelMgr)
- boost::ireplace_all(strUTF8Text, pParcelMgr->getAgentParcelName(), RlvStrings::getString(RLV_STRING_HIDDEN_PARCEL));
+ boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + escape_for_regex(pParcelMgr->getAgentParcelName()) + "\\b", boost::regex::icase), RlvStrings::getString(RLV_STRING_HIDDEN_PARCEL));
}
// Checked: 2010-12-08 (RLVa-1.2.2c) | Modified: RLVa-1.2.2c
@@ -386,7 +394,7 @@ void RlvUtil::filterNames(std::string& strUTF8Text, bool fFilterLegacy)
LLAvatarName avName;
if ( (LLAvatarNameCache::get(idAgents[idxAgent], &avName)) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgents[idxAgent])) )
{
- const std::string& strDisplayName = avName.getDisplayName();
+ const std::string& strDisplayName = escape_for_regex(avName.getDisplayName());
bool fFilterDisplay = (strDisplayName.length() > 2);
const std::string& strLegacyName = avName.getLegacyName();
fFilterLegacy &= (strLegacyName.length() > 2);
@@ -396,16 +404,16 @@ void RlvUtil::filterNames(std::string& strUTF8Text, bool fFilterLegacy)
if (boost::icontains(strLegacyName, strDisplayName))
{
if (fFilterLegacy)
- boost::ireplace_all(strUTF8Text, strLegacyName, strAnonym);
+ boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + strLegacyName + "\\b", boost::regex::icase), strAnonym);
if (fFilterDisplay)
- boost::ireplace_all(strUTF8Text, strDisplayName, strAnonym);
+ boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + strDisplayName + "\\b", boost::regex::icase), strAnonym);
}
else
{
if (fFilterDisplay)
- boost::ireplace_all(strUTF8Text, strDisplayName, strAnonym);
+ boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + strDisplayName + "\\b", boost::regex::icase), strAnonym);
if (fFilterLegacy)
- boost::ireplace_all(strUTF8Text, strLegacyName, strAnonym);
+ boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + strLegacyName + "\\b", boost::regex::icase), strAnonym);
}
}
}
diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h
index 9d586e1724..c19f273770 100644
--- a/indra/newview/rlvcommon.h
+++ b/indra/newview/rlvcommon.h
@@ -19,6 +19,7 @@
#include "llavatarname.h"
#include "llselectmgr.h"
+#include "lltrans.h"
#include "llviewercontrol.h"
#include "rlvdefines.h"
@@ -164,7 +165,7 @@ public:
static void notifyBlocked(const std::string& strNotifcation, const LLSD& sdArgs = LLSD());
static void notifyBlockedGeneric() { notifyBlocked(RLV_STRING_BLOCKED_GENERIC); }
- static void notifyBlockedViewXXX(LLAssetType::EType assetType) { notifyBlocked(RLV_STRING_BLOCKED_VIEWXXX, LLSD().with("[TYPE]", LLAssetType::lookup(assetType))); }
+ static void notifyBlockedViewXXX(LLAssetType::EType assetType) { notifyBlocked(RLV_STRING_BLOCKED_VIEWXXX, LLSD().with("[TYPE]", LLTrans::getString(LLAssetType::lookupHumanReadable(assetType)))); }
static void notifyFailedAssertion(const std::string& strAssert, const std::string& strFile, int nLine);
static void sendBusyMessage(const LLUUID& idTo, const std::string& strMsg, const LLUUID& idSession = LLUUID::null);
diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h
index 9d7ceec8bf..fd16d15302 100644
--- a/indra/newview/rlvdefines.h
+++ b/indra/newview/rlvdefines.h
@@ -34,7 +34,7 @@ const S32 RLVa_VERSION_PATCH = 0;
const S32 RLVa_VERSION_BUILD = 0;
// Uncomment before a final release
-//#define RLV_RELEASE
+#define RLV_RELEASE
// Defining these makes it easier if we ever need to change our tag
#define RLV_WARNS LL_WARNS("RLV")
diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp
index d162dc4bcc..026d05f46f 100644
--- a/indra/newview/rlvhandler.cpp
+++ b/indra/newview/rlvhandler.cpp
@@ -57,6 +57,12 @@
#include "rlvui.h"
#include "rlvextensions.h"
+// [FS communication UI]
+#include "fsfloatervoicecontrols.h"
+// [FS communication UI]
+#include "fslslbridge.h"
+#include "fsradar.h"
+
// Boost includes
#include
@@ -1589,7 +1595,7 @@ void RlvBehaviourToggleHandler::onCommandToggle(ERlvBehaviour eBh
// Hide the build floater if it's currently visible
if (LLFloaterReg::instanceVisible("build"))
- LLToolMgr::instance().toggleBuildMode();
+ LLToolMgr::instance().toggleBuildMode("toggleonly");
}
// Start or stop filtering opening the beacons floater
@@ -1907,6 +1913,10 @@ void RlvBehaviourToggleHandler::onCommandToggle(ERlvBehaviour
LLFloaterReg::const_instance_list_t invFloaters = LLFloaterReg::getFloaterList("inventory");
for (LLFloater* pFloater : invFloaters)
pFloater->closeFloater();
+
+ LLFloaterReg::const_instance_list_t lSecFloaters = LLFloaterReg::getFloaterList("secondary_inventory");
+ for (LLFloaterReg::const_instance_list_t::const_iterator itSecFloater = lSecFloaters.begin(); itSecFloater != lSecFloaters.end(); ++itSecFloater)
+ (*itSecFloater)->closeFloater();
}
//
@@ -1941,10 +1951,17 @@ void RlvBehaviourToggleHandler::onCommandToggle(ERlvBehaviour
//
// Filter (or stop filtering) opening new inventory floaters
//
+ // Modified for FIRE-8804
if (fHasBhvr)
+ {
RlvUIEnabler::instance().addGenericFloaterFilter("inventory");
+ RlvUIEnabler::instance().addGenericFloaterFilter("secondary_inventory");
+ }
else
+ {
RlvUIEnabler::instance().removeGenericFloaterFilter("inventory");
+ RlvUIEnabler::instance().removeGenericFloaterFilter("secondary_inventory");
+ }
}
// Handles: @shownames[:]=n|y toggles
@@ -1958,14 +1975,23 @@ void RlvBehaviourToggleHandler::onCommandToggle(ERlvBehaviou
RlvActions::setShowName(RlvActions::SNC_DEFAULT, !fHasBhvr);
// Refresh the nearby people list
- LLPanelPeople* pPeoplePanel = LLFloaterSidePanelContainer::getPanel("people", "panel_people");
- RLV_ASSERT( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) );
- if ( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) )
- {
- if (pPeoplePanel->getNearbyList()->isInVisibleChain())
- pPeoplePanel->onCommit();
- pPeoplePanel->getNearbyList()->updateAvatarNames();
- }
+ // [Standalone radar]
+ //LLPanelPeople* pPeoplePanel = LLFloaterSidePanelContainer::getPanel("people", "panel_people");
+ //RLV_ASSERT( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) );
+ //if ( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) )
+ // pPeoplePanel->getNearbyList()->updateAvatarNames();
+ FSRadar* pRadar = FSRadar::getInstance();
+ RLV_ASSERT( (pRadar) );
+ if ( (pRadar) )
+ pRadar->updateNames();
+ // [Standalone radar]
+
+ // Refresh the speaker list
+ // [FS communication UI]
+ FSFloaterVoiceControls* pCallFloater = LLFloaterReg::findTypedInstance("fs_voice_controls");
+ if (pCallFloater)
+ pCallFloater->getAvatarCallerList()->updateAvatarNames();
+ // [FS communication UI]
// Force the use of the "display name" cache so we can filter both display and legacy names (or return back to the user's preference)
if (fHasBhvr)
@@ -2084,7 +2110,7 @@ ERlvCmdRet RlvHandler::processForceCommand(const RlvCommand& rlvCmd) const
{
F32 nValue = (rlvCmdOption.m_nPelvisToFoot - gAgentAvatarp->getPelvisToFoot()) * rlvCmdOption.m_nPelvisToFootDeltaMult;
nValue += rlvCmdOption.m_nPelvisToFootOffset;
- if (gAgentAvatarp->getRegion()->avatarHoverHeightEnabled())
+ if (gAgentAvatarp->getRegion()->avatarHoverHeightEnabled() || !gAgentAvatarp->isUsingServerBakes())
{
LLVector3 avOffset(0.0, 0.0, llclamp(nValue, MIN_HOVER_Z, MAX_HOVER_Z));
gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", avOffset.mV[VZ]);
@@ -2687,7 +2713,9 @@ ERlvCmdRet RlvHandler::onGetAttach(const RlvCommand& rlvCmd, std::string& strRep
const LLViewerJointAttachment* pAttachPt = itAttach->second;
if ( (0 == idxAttachPt) || (itAttach->first == idxAttachPt) )
{
- bool fWorn = (pAttachPt->getNumObjects() > 0) &&
+ // Ansa: Do not include the bridge when checking for number of objects
+ S32 bridge_correct = (pAttachPt->getName() == FS_BRIDGE_ATTACHMENT_POINT_NAME && FSLSLBridge::instance().isBridgeValid()) ? 1 : 0;
+ bool fWorn = ((pAttachPt->getNumObjects() - bridge_correct) > 0) &&
( (!RlvSettings::getHideLockedAttach()) || (RlvForceWear::isForceDetachable(pAttachPt, true, rlvCmd.getObjectID())) );
strReply.push_back( (fWorn) ? '1' : '0' );
}
@@ -2716,7 +2744,11 @@ ERlvCmdRet RlvHandler::onGetAttachNames(const RlvCommand& rlvCmd, std::string& s
switch (rlvCmd.getBehaviourType())
{
case RLV_BHVR_GETATTACHNAMES: // Every attachment point that has an attached object
- fAdd = (pAttachPt->getNumObjects() > 0);
+ // Ansa: Do not include the bridge when checking for number of objects
+ {
+ S32 bridge_correct = ((pAttachPt->getName() == FS_BRIDGE_ATTACHMENT_POINT_NAME && FSLSLBridge::instance().isBridgeValid()) ? 1 : 0);
+ fAdd = ((pAttachPt->getNumObjects() - bridge_correct) > 0);
+ }
break;
case RLV_BHVR_GETADDATTACHNAMES: // Every attachment point that can be attached to (wear replace OR wear add)
fAdd = (gRlvAttachmentLocks.canAttach(pAttachPt) & RLV_WEAR);
diff --git a/indra/newview/rlvhandler.h b/indra/newview/rlvhandler.h
index 6cac8be2bd..3fa827727d 100644
--- a/indra/newview/rlvhandler.h
+++ b/indra/newview/rlvhandler.h
@@ -20,9 +20,9 @@
#include
#include "rlvcommon.h"
-#if LL_GNUC
+//#if LL_GNUC
#include "rlvhelper.h" // Needed to make GCC happy
-#endif // LL_GNUC
+//#endif // LL_GNUC
// ============================================================================
diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp
index 4805c26f53..09a1da3bbe 100644
--- a/indra/newview/rlvhelper.cpp
+++ b/indra/newview/rlvhelper.cpp
@@ -21,6 +21,10 @@
#include "llnotificationsutil.h"
#include "llviewerobjectlist.h"
+// FIRE-4453 bridge detached by the RLV command @remattach=force
+#include "fslslbridge.h"
+// FIRE-4453
+
#include "rlvcommon.h"
#include "rlvhelper.h"
#include "rlvhandler.h"
@@ -1132,6 +1136,9 @@ bool RlvForceWear::isForceDetachable(const LLViewerObject* pAttachObj, bool fChe
// - it's not "remove locked" by anything (or anything except the object specified by pExceptObj)
// - it's strippable
// - composite folders are disabled *or* it isn't part of a composite folder that has at least one item locked
+ // FIRE-4453 bridge detached by the RLV command @remattach=force
+ // - it's not the LSL bridge, which should never be affected by RLV
+ // FIRE-4453
#ifdef RLV_EXPERIMENTAL_COMPOSITEFOLDERS
LLViewerInventoryCategory* pFolder = NULL;
#endif // RLV_EXPERIMENTAL_COMPOSITEFOLDERS
@@ -1141,6 +1148,9 @@ bool RlvForceWear::isForceDetachable(const LLViewerObject* pAttachObj, bool fChe
&& ( (idExcept.isNull()) ? (!gRlvAttachmentLocks.isLockedAttachment(pAttachObj))
: (!gRlvAttachmentLocks.isLockedAttachmentExcept(pAttachObj, idExcept)) )
&& (isStrippable(pAttachObj->getAttachmentItemID()))
+ // FIRE-4453 bridge detached by the RLV command @remattach=force
+ && (pAttachObj->getID() != FSLSLBridge::instance().getAttachedID())
+ // FIRE-4453
#ifdef RLV_EXPERIMENTAL_COMPOSITEFOLDERS
&& ( (!fCheckComposite) || (!RlvSettings::getEnableComposites()) ||
(!gRlvHandler.getCompositeInfo(pAttachPt->getItemID(), NULL, &pFolder)) || (gRlvHandler.canTakeOffComposite(pFolder)) )
diff --git a/indra/newview/rlvinventory.cpp b/indra/newview/rlvinventory.cpp
index 879ca8943c..5dad1ac716 100644
--- a/indra/newview/rlvinventory.cpp
+++ b/indra/newview/rlvinventory.cpp
@@ -411,7 +411,7 @@ void RlvRenameOnWearObserver::doneIdle()
}
const LLViewerJointAttachment* pAttachPt = NULL; S32 idxAttachPt = 0;
- RLV_ASSERT(mComplete.size() > 0); // Catch instances where we forgot to call startFetch()
+ //RLV_ASSERT(mComplete.size() > 0); // Catch instances where we forgot to call startFetch()
for (uuid_vec_t::const_iterator itItem = mComplete.begin(); itItem != mComplete.end(); ++itItem)
{
const LLUUID& idAttachItem = *itItem;
diff --git a/indra/newview/rlvlocks.cpp b/indra/newview/rlvlocks.cpp
index d7f86b81b7..0738e126ca 100644
--- a/indra/newview/rlvlocks.cpp
+++ b/indra/newview/rlvlocks.cpp
@@ -15,6 +15,7 @@
*/
#include "llviewerprecompiledheaders.h"
+#include "fslslbridge.h"
#include "llagent.h"
#include "llappearancemgr.h"
#include "llattachmentsmgr.h"
@@ -658,6 +659,13 @@ void RlvAttachmentLockWatchdog::onDetach(const LLViewerObject* pAttachObj, const
if ( (!idxAttachPt) || (idAttachItem.isNull()) )
return;
+ // Bridge can always be detached
+ if (FSLSLBridge::instance().canDetach(idAttachItem))
+ {
+ return;
+ }
+ //
+
// If it's an attachment that's pending force-detach then we don't want to do anything (even if it's currently "remove locked")
rlv_detach_map_t::iterator itDetach = std::find(m_PendingDetach.begin(), m_PendingDetach.end(), idAttachItem);
if (itDetach != m_PendingDetach.end())
diff --git a/indra/newview/rlvui.cpp b/indra/newview/rlvui.cpp
index 26acef9490..eb797c2e0d 100644
--- a/indra/newview/rlvui.cpp
+++ b/indra/newview/rlvui.cpp
@@ -195,15 +195,27 @@ void RlvUIEnabler::onToggleShowMinimap()
// Break/reestablish the visibility connection for the nearby people panel embedded minimap instance
LLPanel* pPeoplePanel = LLFloaterSidePanelContainer::getPanel("people", "panel_people");
- LLPanel* pNetMapPanel = (pPeoplePanel) ? pPeoplePanel->findChild("Net Map Panel", TRUE) : NULL;
+ LLPanel* pNetMapPanel = (pPeoplePanel) ? pPeoplePanel->getChild("minimaplayout", TRUE) : NULL; //AO: firestorm specific
RLV_ASSERT( (pPeoplePanel) && (pNetMapPanel) );
if (pNetMapPanel)
{
- pNetMapPanel->setMakeVisibleControlVariable( (fEnable) ? gSavedSettings.getControl("NearbyListShowMap").get() : NULL);
+ pNetMapPanel->setMakeVisibleControlVariable( (fEnable) ? gSavedSettings.getControl("ShowRadarMinimap").get() : NULL);
// Reestablishing the visiblity connection will show the panel if needed so we only need to take care of hiding it when needed
if ( (!fEnable) && (pNetMapPanel->getVisible()) )
pNetMapPanel->setVisible(false);
}
+
+ // Break/reestablish the visibility connection for the radar panel embedded minimap instance
+ LLFloater* pRadarFloater = LLFloaterReg::getInstance("fs_radar");
+ LLPanel* pRadarNetMapPanel = (pRadarFloater) ? pRadarFloater->getChild("minimaplayout", TRUE) : NULL; //AO: firestorm specific
+ RLV_ASSERT( (pRadarFloater) && (pRadarNetMapPanel) );
+ if (pRadarNetMapPanel)
+ {
+ pRadarNetMapPanel->setMakeVisibleControlVariable( (fEnable) ? gSavedSettings.getControl("ShowRadarMinimap").get() : NULL);
+ // Reestablishing the visiblity connection will show the panel if needed so we only need to take care of hiding it when needed
+ if ( (!fEnable) && (pRadarNetMapPanel->getVisible()) )
+ pRadarNetMapPanel->setVisible(false);
+ }
}
// Checked: 2010-02-28 (RLVa-1.4.0a) | Added: RLVa-1.2.0a
@@ -415,7 +427,10 @@ bool RlvUIEnabler::canViewRegionProperties()
bool RlvUIEnabler::hasOpenIM(const LLUUID& idAgent)
{
LLUUID idSession = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, idAgent);
- return (NULL != LLFloaterReg::findInstance("impanel", idSession));
+ // [FS communication UI]
+ //return (NULL != LLFloaterReg::findInstance("impanel", idSession));
+ return (NULL != LLFloaterReg::findInstance("fs_impanel", idSession));
+ // [FS communication UI]
}
// Checked: 2011-11-04 (RLVa-1.4.4a) | Modified: RLVa-1.4.4a
@@ -432,7 +447,10 @@ bool RlvUIEnabler::hasOpenProfile(const LLUUID& idAgent)
// Checked: 2010-09-11 (RLVa-1.2.1d) | Added: RLVa-1.2.1d
bool RlvUIEnabler::isBuildEnabled()
{
- return (gAgent.canEditParcel()) && ((!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT)) || (!gRlvHandler.hasBehaviour(RLV_BHVR_REZ)));
+ // FIRE-1432: Build button not properly updated
+ //return (gAgent.canEditParcel()) && ((!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT)) || (!gRlvHandler.hasBehaviour(RLV_BHVR_REZ)));
+ return (LLViewerParcelMgr::getInstance()->allowAgentBuild()) && ((!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT)) || (!gRlvHandler.hasBehaviour(RLV_BHVR_REZ)));
+ //
}
// ============================================================================