Merge Firestorm LGPL

master
Ansariel 2016-07-04 16:10:45 +02:00
commit ea28514d3b
203 changed files with 5715 additions and 2106 deletions

12
.hgeol Normal file
View File

@ -0,0 +1,12 @@
[repository]
native = LF
[patterns]
path:indra/lscript/lscript_compile/windows/unistd.h = CRLF
path:indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt = CRLF
path:indra/tools/vstool/README.txt = CRLF
**.h = native
**.cpp = native
**.py = native
**.xml = native
**.txt = native

View File

@ -1 +1 @@
6fe7cc30ebc09cfe92787b71fa9dc55fd0396ec5
471361eabfbf2865016a50e8087712b2266e83c7

View File

@ -1 +1 @@
543c14d1270ba0327474287b08ae6463d8c03fdb
264c7688ecdba8432a64f36a24e389eb85cbc10d

View File

@ -1 +1 @@
a48d42d15595c42a3ccb17a7c5ed246b87225cf3
59b305ccfba9d4ba7935475d31f94b6ecfe415a4

View File

@ -1,14 +1,11 @@
[Viewer/Build]
- changed : compiler options for "Release with Debug" builds
- changed : compiler and linker options for "Release" builds
- changed : removed LL's changeset tags and added new (consistent) SL-X.Y.Z tags for releases
- changed : break into the debugger rather than forcing the process into an unrecoverable state for "llerrs" on non-release builds
* Changed compiler options for "Release with Debug" builds
* Changed compiler and linker options for "Release" builds
* Removed LL's changeset tags and added new (consistent) SL-X.Y.Z tags for releases
* Break into the debugger rather than forcing the process into an unrecoverable state for "llerrs" on non-release builds
-> Windows only
- changed : set the "UNATTENDED" flag to FALSE for all (Windows) *OS build configurations
- changed : updated OpenJPEG package with debug information for crash debugging
- fixed : *OS builds don't set the default Visual Studio project and configuration
- fixed : libpng is built with "Whole Program Optimization" and causing slow linker performance
-> "MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance"
-> causes the linker to abort the current run and start over
- fixed : viewer fails to compile with only the Windows 8 SDK installed
- fixed : viewer won't compile when bison v2.7.1 is installed
* Set the "UNATTENDED" flag to FALSE for all (Windows) *OS build configurations
* CATZ-234: Updated FMOD Ex library to v4.44.61 (Windows)
* CATZ-232: Updated OpenJPEG library to v1.5.2 (Windows)
* [FIXED] Viewer fails to compile with only the Windows 8 SDK installed
* [FIXED] JpegLib is built with "Whole Program Optimization" and causing slow linker performance

View File

@ -27,9 +27,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>ff2b6c4678ec520b4dd95431fc7d6191</string>
<string>e54568cfa7bced82cb6eae26471b7fa5</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/slplugin_x86-4.7.6.48693-darwin-201602191441-r3.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/slplugin_x86-4.7.8.50261-darwin-201606211711-r3.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -71,9 +71,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>370de49a91ce91516697db8968f5e8b0</string>
<string>47ddd059d48f650e39796c10ea828689</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/ndPhysicsStub-1.0-darwin-201505191946-r76.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/ndPhysicsStub-1.0-darwin-201606211534-r77.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -295,9 +295,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>d0abfb393024eea8cffdfde3ec5b673d</string>
<string>72b06fb0bbc1d52179abf8bd8db9b2df</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/boost-1.57-darwin-201505120538-r136.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/boost-1.57-darwin64-201606171648.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -347,9 +347,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>b93d42a16c5a9e6731ca57d363c231e0</string>
<string>a1964fea0954d31c3aa29ae196b17f8f</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/colladadom-2.3.201505131932-r98-darwin-201505131932-r98.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/colladadom-2.3.201606172015-darwin-201606172015.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -401,9 +401,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>c2c18782baee63f556e21a42527919e6</string>
<string>b1064a7e4e8f37fdea5a1538b55ffcc2</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/curl-7.38.0.201505121710-r147-darwin-201505121710-r147.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/curl-7.47.0.201605151653-darwin-201605151653.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -975,9 +975,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>af760536a469b6e28df675d4c7eca54b</string>
<string>9253e0ebde03d4c2161dfeaf02565758</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/google_breakpad-1413.201505171732-r96-darwin-201505171732-r96.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/google_breakpad-1413.201606211136-r97-darwin-201606211136-r97.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -1301,9 +1301,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>bf4bb114d861213eb946c6e8b7e35178</string>
<string>a087b1642025efa765e47e8149b026ee</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/jsoncpp-0.5.0.201508041108-r34-darwin-201508041108-r34.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/jsoncpp-0.5.0.201606172236-r32-darwin-201606172236-r32.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -1673,11 +1673,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>82779518d3079508ecdafe708e003aaf</string>
<string>85d8896ca1cec09affc48122aeea22d2</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/llceflib-1.5.3.201601201743-r174-darwin-201601201743-r174.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/llceflib-1.5.3.201606212155-r177-darwin-201606212155-r177.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -2135,9 +2135,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>64b2e1e2e4869c56c235ba43c1e66bdb</string>
<string>582d360d195d3dfb48695cb5e206cbf1</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/pcre-8.35.-darwin-201505122041-r52.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/pcre-8.35.-darwin-201606171942.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>

View File

@ -147,8 +147,8 @@ if (WINDOWS)
add_definitions(/WX)
endif (NOT VS_DISABLE_FATAL_WARNINGS)
# configure win32 API for windows XP+ compatibility
set(WINVER "0x0501" CACHE STRING "Win32 API Target version (see http://msdn.microsoft.com/en-us/library/aa383745%28v=VS.85%29.aspx)")
# configure win32 API for Windows Vista+ compatibility
set(WINVER "0x0600" CACHE STRING "Win32 API Target version (see http://msdn.microsoft.com/en-us/library/aa383745%28v=VS.85%29.aspx)")
add_definitions("/DWINVER=${WINVER}" "/D_WIN32_WINNT=${WINVER}")
if( ND_BUILD64BIT_ARCH )
@ -312,6 +312,9 @@ if (DARWIN)
set(CMAKE_CXX_LINK_FLAGS "-Wl,-no_compact_unwind -Wl,-headerpad_max_install_names,-search_paths_first")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
set(DARWIN_extra_cstar_flags "-g -Wno-unused-local-typedef -Wno-deprecated-declarations")
# <FS:TS> Take a deep breath and turn on C++11...
set(DARWIN_extra_cstar_flags "-std=c++11 -stdlib=libc++ -Wno-overloaded-virtual ${DARWIN_extra_cstar_flags}")
# </FS:TS>
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}")
# NOTE: it's critical that the optimization flag is put in front.

View File

@ -152,16 +152,37 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(DARWIN 1)
# now we only support Xcode 6.0 using 10.9 (Mavericks), minimum OS 10.7 (Lion)
set(XCODE_VERSION 6.0)
#<FS:TS> Be a bit more flexible: support Xcode 6 or 7 and SDKs from 10.9 to 10.11
#set(XCODE_VERSION 6.0)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.7)
set(CMAKE_OSX_SYSROOT macosx10.9)
#set(CMAKE_OSX_SYSROOT macosx10.9)
if(IS_DIRECTORY "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk")
# Assume Xcode 7 if El Capitan SDK is present
set(XCODE_VERSION 7.3)
set(CMAKE_OSX_SYSROOT macosx10.11)
message(STATUS "OS X SDK 10.11 found.")
elseif(IS_DIRECTORY "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk")
# Assume Xcode 7 if Yosemite SDK is present
set(XCODE_VERSION 7.0)
set(CMAKE_OSX_SYSROOT macosx10.10)
message(STATUS "OS X SDK 10.10 found.")
elseif(IS_DIRECTORY "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk")
# Assume Xcode 6 if only Mavericks SDK is present
set(XCODE_VERSION 6.0)
set(CMAKE_OSX_SYSROOT macosx10.9)
message(STATUS "OS X SDK 10.9 found.")
else(IS_DIRECTORY "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk")
error("Unable to determine which OS X SDK to use. Giving up.")
endif(IS_DIRECTORY "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk")
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL 3)
set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO)
set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH NO)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS ssse3)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")
# <FS:TS> Need libc++ for C++11 and Boost
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
# Build only for i386 by default, system default on MacOSX 10.6+ is x86_64

View File

@ -234,8 +234,16 @@ void LLCoros::toplevel(coro::self& self, CoroData* data, const callable_t& calla
{
// capture the 'self' param in CoroData
data->mSelf = &self;
// <FS:ND> FIRE-19481; do not let any exception propagate
// callable();
try {
// run the code the caller actually wants in the coroutine
callable();
} catch( ... ){ LL_WARNS() << "Exception during coroutine" << LL_ENDL; }
// </FS:ND>
// This cleanup isn't perfectly symmetrical with the way we initially set
// data->mPrev, but this is our last chance to reset mCurrentCoro.
sCurrentCoro.reset(data->mPrev);

View File

@ -1104,7 +1104,12 @@ namespace LLError
{
return false;
}
// <FS:ND> FIRE-19403/BUG-18253/MAINT-6469; During viewer shutdown the static instance could have already been destroyed
if( !Settings::instanceExists() )
return false;
// </FS:ND>
SettingsConfigPtr s = Settings::getInstance()->getSettingsConfig();
s->mShouldLogCallCounter++;

View File

@ -45,6 +45,7 @@
#include <cctype>
// external library headers
#include <boost/range/iterator_range.hpp>
#include <boost/dcoroutine/exception.hpp> // for abnormal_exit
#if LL_WINDOWS
#pragma warning (push)
#pragma warning (disable : 4701) // compiler thinks might use uninitialized var, but no
@ -512,7 +513,15 @@ bool LLEventStream::post(const LLSD& event)
// Let caller know if any one listener handled the event. This is mostly
// useful when using LLEventStream as a listener for an upstream
// LLEventPump.
// <FS:ND> FIRE-19481; do not let any abnormal_exit propagate
// return (*signal)(event);
try {
return (*signal)(event);
}catch( boost::dcoroutines::abnormal_exit& )
{ return false; }
// </FS:ND>
}
/*****************************************************************************

View File

@ -45,7 +45,10 @@ typedef FILE LLFILE;
typedef struct _stat llstat;
#else
typedef struct stat llstat;
#include <bits/postypes.h>
//<FS:TS> This file only exists on Linux
# if LL_LINUX
# include <bits/postypes.h>
# endif
#endif
#ifndef S_ISREG

View File

@ -201,7 +201,7 @@
#elif LL_LINUX
#define LL_TYPEOF(exp) typeof(exp)
#elif LL_DARWIN
#define LL_TYPEOF(exp) typeof(exp)
#define LL_TYPEOF(exp) decltype(exp)
#endif
#define LL_TO_STRING_HELPER(x) #x

View File

@ -444,7 +444,7 @@ public:
struct LLDictionaryLess
{
public:
bool operator()(const std::string& a, const std::string& b)
bool operator()(const std::string& a, const std::string& b) const
{
return (LLStringUtil::precedesDict(a, b) ? true : false);
}

View File

@ -261,7 +261,7 @@ static BOOL isDefault(const std::string& scheme, U16 port)
void LLURI::parseAuthorityAndPathUsingOpaque()
{
if (mScheme == "http" || mScheme == "https" || mScheme == "hop" ||
if (mScheme == "http" || mScheme == "https" || mScheme == "hop" || mScheme == "inworldz" || mScheme == "iw" ||
mScheme == "ftp" || mScheme == "secondlife" ||
mScheme == "x-grid-location-info")
{

View File

@ -122,7 +122,7 @@ LLColor4 LLColor4::cyan6(0.2f, 0.6f, 0.6f, 1.0f);
//////////////////////////////////////////////////////////////////////////////
// conversion
LLColor4::operator const LLColor4U() const
LLColor4::operator /*const*/ LLColor4U() const
{
return LLColor4U(
(U8)llclampb(ll_round(mV[VRED]*255.f)),

View File

@ -131,7 +131,7 @@ class LLColor4
friend const LLColor4& operator*=(LLColor4 &a, const LLColor4 &b); // Doesn't multiply alpha! (for lighting)
// conversion
operator const LLColor4U() const;
operator /*const*/ LLColor4U() const;
// Basic color values.
static LLColor4 red;

View File

@ -130,7 +130,7 @@ public:
static BOOL parseColor4U(const std::string& buf, LLColor4U* value);
// conversion
operator const LLColor4() const
operator /*const*/ LLColor4() const
{
return LLColor4(*this);
}

View File

@ -498,6 +498,13 @@ void LLAvatarNameCache::cleanupClass()
sCache.clear();
}
// <FS:Ansariel> FIRE-6659: Legacy "Resident" name toggle
void LLAvatarNameCache::clearCache()
{
sCache.clear();
}
// </FS:Ansariel>
bool LLAvatarNameCache::importFile(std::istream& istr)
{
LLSD data;

View File

@ -102,6 +102,9 @@ namespace LLAvatarNameCache
F64 nameExpirationFromHeaders(const LLSD& headers);
void addUseDisplayNamesCallback(const use_display_name_signal_t::slot_type& cb);
// <FS:Ansariel> FIRE-6659: Legacy "Resident" name toggle
void clearCache();
}
// Parse a cache-control header to get the max-age delta-seconds.

View File

@ -126,7 +126,7 @@ private:
F32 mValue;
LLUIColor mColor;
bool operator <(const Threshold& other)
bool operator <(const Threshold& other) const
{
return mValue < other.mValue;
}

View File

@ -520,7 +520,9 @@ void LLUICtrl::setEnabledControlVariable(LLControlVariable* control)
{
mEnabledControlVariable = control;
mEnabledControlConnection = mEnabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("enabled")));
setEnabled(mEnabledControlVariable->getValue().asBoolean());
// <FS:Ansariel> enabled_control / disabled_control don't work properly with LLRadioGroup
//setEnabled(mEnabledControlVariable->getValue().asBoolean());
setEnabled(mEnabledControlVariable->getValue().asString() == "0" ? FALSE : mEnabledControlVariable->getValue().asBoolean());
}
}
@ -535,7 +537,9 @@ void LLUICtrl::setDisabledControlVariable(LLControlVariable* control)
{
mDisabledControlVariable = control;
mDisabledControlConnection = mDisabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("disabled")));
setEnabled(!(mDisabledControlVariable->getValue().asBoolean()));
// <FS:Ansariel> enabled_control / disabled_control don't work properly with LLRadioGroup
//setEnabled(!(mDisabledControlVariable->getValue().asBoolean()));
setEnabled(!(mDisabledControlVariable->getValue().asString() == "0" ? FALSE : mDisabledControlVariable->getValue().asBoolean()));
}
}
@ -587,12 +591,18 @@ bool LLUICtrl::controlListener(const LLSD& newvalue, LLHandle<LLUICtrl> handle,
}
else if (type == "enabled")
{
ctrl->setEnabled(newvalue.asBoolean());
// <FS:Ansariel> enabled_control / disabled_control don't work properly with LLRadioGroup
//ctrl->setEnabled(newvalue.asBoolean());
ctrl->setEnabled(newvalue.asString() == "0" ? FALSE : newvalue.asBoolean());
// </FS:Ansariel>
return true;
}
else if(type =="disabled")
{
ctrl->setEnabled(!newvalue.asBoolean());
// <FS:Ansariel> enabled_control / disabled_control don't work properly with LLRadioGroup
//ctrl->setEnabled(!newvalue.asBoolean());
ctrl->setEnabled(!(newvalue.asString() == "0" ? FALSE : newvalue.asBoolean()));
// </FS:Ansariel>
return true;
}
else if (type == "visible")

View File

@ -42,7 +42,7 @@
// <FS:AW> hop:// protocol>
//#define APP_HEADER_REGEX "((x-grid-location-info://[-\\w\\.]+/app)|(secondlife:///app))"
#define APP_HEADER_REGEX "(((hop|x-grid-location-info)://[-\\w\\.\\:\\@]+/app)|((hop|secondlife):///app))"
#define APP_HEADER_REGEX "(((hop|x-grid-location-info)://[-\\w\\.\\:\\@]+/app)|((hop|secondlife|inworldz|iw):///app))"
// </FS:AW>
// Utility functions
@ -340,7 +340,9 @@ std::string LLUrlEntryHTTPNoProtocol::getTooltip(const std::string &url) const
LLUrlEntryInvalidSLURL::LLUrlEntryInvalidSLURL()
: LLUrlEntryBase()
{
mPattern = boost::regex("(http://(maps.secondlife.com|slurl.com)/secondlife/|secondlife://(/app/(worldmap|teleport)/)?)[^ /]+(/-?[0-9]+){1,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
// <FS:Ansariel> Inworldz special
//mPattern = boost::regex("(http://(maps.secondlife.com|slurl.com)/secondlife/|secondlife://(/app/(worldmap|teleport)/)?)[^ /]+(/-?[0-9]+){1,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
mPattern = boost::regex("(http://(maps.secondlife.com|slurl.com)/secondlife/|(secondlife|inworldz|iw)://(/app/(worldmap|teleport)/)?)[^ /]+(/-?[0-9]+){1,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_http.xml";
mTooltip = LLTrans::getString("TooltipHttpUrl");
@ -1016,7 +1018,7 @@ LLUrlEntryObjectIM::LLUrlEntryObjectIM()
{
// <FS:AW> hop:// protocol; Ansa: Stop at first space so we can use it in notifications!
//mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?.*",
mPattern = boost::regex("(hop|secondlife):///app/objectim/[\\da-f-]+\?[^ \t\r\n\v\f]*",
mPattern = boost::regex("(hop|secondlife|inworldz|iw):///app/objectim/[\\da-f-]+\?[^ \t\r\n\v\f]*",
// </FS:AW>
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_objectim.xml";
@ -1145,7 +1147,9 @@ void LLUrlEntryParcel::processParcelInfo(const LLParcelData& parcel_data)
//
LLUrlEntryPlace::LLUrlEntryPlace()
{
mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://)))\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?", // <AW: hop:// protocol>
// <FS:Ansariel> Inworldz special
//mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://)))\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?", // <AW: hop:// protocol>
mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|((secondlife|inworldz|iw)://)))\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?", // <AW: hop:// protocol>
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_slurl.xml";
mTooltip = LLTrans::getString("TooltipSLURL");
@ -1327,7 +1331,7 @@ std::string LLUrlEntryTeleport::getLocation(const std::string &url) const
//
LLUrlEntrySL::LLUrlEntrySL()
{
mPattern = boost::regex("(hop|secondlife)://(\\w+)?(:\\d+)?/\\S+", // <AW: hop:// protocol>
mPattern = boost::regex("(hop|secondlife|inworldz|iw)://(\\w+)?(:\\d+)?/\\S+", // <AW: hop:// protocol>
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_slapp.xml";
mTooltip = LLTrans::getString("TooltipSLAPP");
@ -1344,7 +1348,7 @@ std::string LLUrlEntrySL::getLabel(const std::string &url, const LLUrlLabelCallb
//
LLUrlEntrySLLabel::LLUrlEntrySLLabel()
{
mPattern = boost::regex("\\[(hop|secondlife)://\\S+[ \t]+[^\\]]+\\]", // <AW: hop:// protocol>
mPattern = boost::regex("\\[(hop|secondlife|inworldz|iw)://\\S+[ \t]+[^\\]]+\\]", // <AW: hop:// protocol>
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_slapp.xml";
mTooltip = LLTrans::getString("TooltipSLAPP");

View File

@ -236,8 +236,8 @@ attributedStringInfo getSegments(NSAttributedString *str)
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAClosestPolicy,
NSOpenGLPFAAccelerated,
NSOpenGLPFASampleBuffers, (samples > 0 ? 1 : 0),
NSOpenGLPFASamples, samples,
NSOpenGLPFASampleBuffers, static_cast<NSOpenGLPixelFormatAttribute>(samples > 0 ? 1 : 0),
NSOpenGLPFASamples, static_cast<NSOpenGLPixelFormatAttribute>(samples),
NSOpenGLPFAStencilSize, 8,
NSOpenGLPFADepthSize, 24,
NSOpenGLPFAAlphaSize, 8,
@ -380,8 +380,8 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (void)mouseMoved:(NSEvent *)theEvent
{
float mouseDeltas[2] = {
[theEvent deltaX],
[theEvent deltaY]
static_cast<float>([theEvent deltaX]),
static_cast<float>([theEvent deltaY])
};
callDeltaUpdate(mouseDeltas, 0);
@ -401,8 +401,8 @@ attributedStringInfo getSegments(NSAttributedString *str)
// The old CoreGraphics APIs we previously relied on are now flagged as obsolete.
// NSEvent isn't obsolete, and provides us with the correct deltas.
float mouseDeltas[2] = {
[theEvent deltaX],
[theEvent deltaY]
static_cast<float>([theEvent deltaX]),
static_cast<float>([theEvent deltaY])
};
callDeltaUpdate(mouseDeltas, 0);
@ -604,13 +604,13 @@ attributedStringInfo getSegments(NSAttributedString *str)
if (mMarkedTextAllowed)
{
unsigned int selected[2] = {
selectedRange.location,
selectedRange.length
static_cast<unsigned int>(selectedRange.location),
static_cast<unsigned int>(selectedRange.length)
};
unsigned int replacement[2] = {
replacementRange.location,
replacementRange.length
static_cast<unsigned int>(replacementRange.location),
static_cast<unsigned int>(replacementRange.length)
};
int string_length = [aString length];

View File

@ -553,7 +553,7 @@ void getPreeditLocation(float *location, unsigned int length)
preeditor->getPreeditLocation(length, &coord, &rect, NULL);
float c[4] = {coord.mX, coord.mY, 0, 0};
float c[4] = {static_cast<float>(coord.mX), static_cast<float>(coord.mY), 0, 0};
convertRectToScreen(gWindowImplementation->getWindow(), c);
@ -909,7 +909,7 @@ BOOL LLWindowMacOSX::setPosition(const LLCoordScreen position)
{
if(mWindow)
{
float pos[2] = {position.mX, position.mY};
float pos[2] = {static_cast<float>(position.mX), static_cast<float>(position.mY)};
setWindowPos(mWindow, pos);
}

View File

@ -123,7 +123,8 @@ if (DARWIN)
PREFIX ""
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path"
LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
CXX_FLAGS "-std=c++11 -stdlib=libc++"
LINK_FLAGS "-stdlib=libc++ -exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
)
add_custom_command(TARGET media_plugin_cef

View File

@ -75,7 +75,7 @@ if (QUICKTIME)
PREFIX ""
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path"
LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
LINK_FLAGS "-stdlib=libc++ -exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
)
# We use a bunch of deprecated system APIs.

View File

@ -127,6 +127,7 @@ set(viewer_SOURCE_FILES
floatermedialists.cpp
fsareasearch.cpp
fsareasearchmenu.cpp
fsavatarrenderpersistence.cpp
fsavatarsearchmenu.cpp
fsblocklistmenu.cpp
fschathistory.cpp
@ -864,6 +865,7 @@ set(viewer_HEADER_FILES
floatermedialists.h
fsareasearch.h
fsareasearchmenu.h
fsavatarrenderpersistence.h
fsavatarsearchmenu.h
fsblocklistmenu.h
fschathistory.h
@ -1546,9 +1548,6 @@ set(viewer_HEADER_FILES
pieseparator.h
pieslice.h
pipeline.h
roles_constants.h
qtoolalign.h
quickprefs.h
rlvactions.h
rlvdefines.h
rlvhandler.h
@ -1559,6 +1558,9 @@ set(viewer_HEADER_FILES
rlvextensions.h
rlvfloaters.h
rlvui.h
roles_constants.h
qtoolalign.h
quickprefs.h
sanitycheck.h
streamtitledisplay.h
utilitybar.h

View File

@ -574,17 +574,21 @@ void AOEngine::checkSitCancel()
if (foreignAnimations(seat))
{
LLUUID animation = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT)->mCurrentAnimationID;
if (animation.notNull())
AOSet::AOState* aoState = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT);
if (aoState)
{
LL_DEBUGS("AOEngine") << "Stopping sit animation due to foreign animations running" << LL_ENDL;
gAgent.sendAnimationRequest(animation, ANIM_REQUEST_STOP);
// remove cycle point cover-up
gAgent.sendAnimationRequest(ANIM_AGENT_SIT_GENERIC, ANIM_REQUEST_STOP);
gAgentAvatarp->LLCharacter::stopMotion(animation);
mSitCancelTimer.stop();
// stop cycle tiemr
mCurrentSet->stopTimer();
LLUUID animation = aoState->mCurrentAnimationID;
if (animation.notNull())
{
LL_DEBUGS("AOEngine") << "Stopping sit animation due to foreign animations running" << LL_ENDL;
gAgent.sendAnimationRequest(animation, ANIM_REQUEST_STOP);
// remove cycle point cover-up
gAgent.sendAnimationRequest(ANIM_AGENT_SIT_GENERIC, ANIM_REQUEST_STOP);
gAgentAvatarp->LLCharacter::stopMotion(animation);
mSitCancelTimer.stop();
// stop cycle tiemr
mCurrentSet->stopTimer();
}
}
}
}
@ -931,6 +935,11 @@ BOOL AOEngine::removeSet(AOSet* set)
BOOL AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 index)
{
if (index < 0)
{
return FALSE;
}
S32 numOfAnimations = state->mAnimations.size();
if (numOfAnimations == 0)
{
@ -1717,9 +1726,16 @@ void AOEngine::onNotecardLoadComplete(LLVFS* vfs, const LLUUID& assetUUID, LLAss
S32 notecardSize = vfs->getSize(assetUUID, type);
char* buffer = new char[notecardSize];
vfs->getData(assetUUID, type, (U8*) buffer, 0, notecardSize);
AOEngine::instance().parseNotecard(buffer);
S32 ret = vfs->getData(assetUUID, type, reinterpret_cast<U8*>(buffer), 0, notecardSize);
if (ret > 0)
{
AOEngine::instance().parseNotecard(buffer);
}
else
{
delete[] buffer;
}
}
void AOEngine::parseNotecard(const char* buffer)
@ -1739,7 +1755,7 @@ void AOEngine::parseNotecard(const char* buffer)
}
std::string text(buffer);
delete buffer;
delete[] buffer;
std::vector<std::string> lines;
LLStringUtil::getTokens(text, lines, "\n");

View File

@ -1309,6 +1309,17 @@
<key>Value</key>
<boolean>1</boolean>
</map>
<key>RLVaExperimentalCommands</key>
<map>
<key>Comment</key>
<string>Enables the experimental command set</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<boolean>1</boolean>
</map>
<key>RLVaHideLockedLayers</key>
<map>
<key>Comment</key>
@ -1355,17 +1366,6 @@
<key>Backup</key>
<integer>0</integer>
</map>
<key>RLVaShowNameTags</key>
<map>
<key>Comment</key>
<string>Display of names above avatars is subject to the general "Show Names" setting when @shownames=n restricted</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<boolean>0</boolean>
</map>
<key>RLVaTopLevelMenu</key>
<map>
<key>Comment</key>
@ -1511,7 +1511,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>http://crashlogs.phoenixviewer.com/upload</string>
<string>http://crashlogs.phoenixviewer.com/upload_llsd</string>
<key>Backup</key>
<integer>0</integer>
</map>
@ -24009,6 +24009,28 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>0</integer>
</map>
<key>FSTagShowTooComplexARW</key>
<map>
<key>Comment</key>
<string>If enabled, the avatar complexity will be shown in the nametag for too complex avatars (Jelly Dolls)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>FSTagAlwaysShowARW</key>
<map>
<key>Comment</key>
<string>If enabled, the avatar complexity will be shown in the nametag for every avatar.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@ -33,5 +33,16 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>CrashHostUrl</key>
<map>
<key>Comment</key>
<string>A URL pointing to a crash report handler; overrides cluster negotiation to locate crash handler.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>http://crashlogs.phoenixviewer.com/upload_llsd</string>
</map>
</map>
</llsd>

View File

@ -777,7 +777,7 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
report_to_nearby_chat(llformat("Object with key %s not found!", target_key.asString().c_str()));
return false;
}
if ((!rlv_handler_t::isEnabled()) || (gRlvHandler.canSit(myObject, LLVector3::zero)))
if ((!RlvActions::isRlvEnabled()) || (RlvActions::canSit(myObject, LLVector3::zero)))
{
LLMessageSystem *msg = gMessageSystem;
msg->newMessageFast(_PREHASH_AgentRequestSit);

View File

@ -57,17 +57,18 @@ BOOL FloaterMediaLists::postBuild()
element["columns"][0]["column"] = "list";
element["columns"][0]["value"] = itr["domain"].asString();
if (itr["action"].asString() == "allow")
{
{
mWhitelistSLC->addElement(element);
mWhitelistSLC->sortByColumn("list", TRUE);
}
else if (itr["action"].asString() == "deny")
{
mBlacklistSLC->addElement(element);
mBlacklistSLC->sortByColumn("list", TRUE);
}
}
mWhitelistSLC->sortByColumn("list", TRUE);
mBlacklistSLC->sortByColumn("list", TRUE);
return TRUE;
}
@ -87,7 +88,7 @@ void FloaterMediaLists::onWhitelistRemove()
{
std::string domain = mWhitelistSLC->getSelectedItemLabel();
for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++)
for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); ++i)
{
if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
{
@ -121,7 +122,7 @@ void FloaterMediaLists::onBlacklistRemove()
{
std::string domain = mBlacklistSLC->getSelectedItemLabel();
for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++)
for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); ++i)
{
if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
{
@ -160,7 +161,7 @@ bool FloaterMediaLists::handleAddDomainCallback(const LLSD& notification, const
LLViewerParcelMedia::sMediaFilterList.append(newmedia);
LLViewerParcelMedia::saveDomainFilterList();
LLFloater* floater = LLFloaterReg::getInstance("media_lists");
LLFloater* floater = LLFloaterReg::findInstance("media_lists");
if (floater)
{
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>(whitelist ? "whitelist" : "blacklist");

View File

@ -36,7 +36,7 @@ class LLButton;
class FloaterMediaLists : public LLFloater
{
public:
FloaterMediaLists(const LLSD& key);
FloaterMediaLists(const LLSD& key);
BOOL postBuild();
static bool handleAddDomainCallback(const LLSD& notification, const LLSD& response);

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -16,7 +16,9 @@
<file>ヒラギノ角ゴ Pro W3.otf</file>
<file>ヒラギノ角ゴ ProN W3.otf</file>
<file>ヒラギノ明朝 ProN W3.ttc</file>
<!-- <FS:TS> FIRE-17481: Add El Capitan Korean font -->
<file>AppleSDGothicNeo.ttc</file>
<!-- </FS:TS> FIRE-17481 -->
<file>AppleGothic.dfont</file>
<file>AppleGothic.ttf</file>
<file>AppleSDGothicNeo-Regular.otf</file>

View File

@ -0,0 +1,122 @@
/**
* @file fsavatarrenderpersistence.cpp
* @brief Firestorm avatar render settings persistence
*
* $LicenseInfo:firstyear=2016&license=viewerlgpl$
* Copyright (c) 2016 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
*
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
* http://www.firestormviewer.org
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "fsavatarrenderpersistence.h"
#include "llsdserialize.h"
FSAvatarRenderPersistence::FSAvatarRenderPersistence()
{
}
FSAvatarRenderPersistence::~FSAvatarRenderPersistence()
{
saveAvatarRenderSettings();
}
void FSAvatarRenderPersistence::init()
{
LL_INFOS() << "Initializing avatar render persistence manager..." << LL_ENDL;
loadAvatarRenderSettings();
}
LLVOAvatar::VisualMuteSettings FSAvatarRenderPersistence::getAvatarRenderSettings(const LLUUID& avatar_id)
{
avatar_render_setting_t::iterator found = mAvatarRenderMap.find(avatar_id);
if (found != mAvatarRenderMap.end())
{
return found->second;
}
return LLVOAvatar::AV_RENDER_NORMALLY;
}
void FSAvatarRenderPersistence::setAvatarRenderSettings(const LLUUID& avatar_id, LLVOAvatar::VisualMuteSettings render_settings)
{
if (render_settings == LLVOAvatar::AV_RENDER_NORMALLY)
{
avatar_render_setting_t::iterator found = mAvatarRenderMap.find(avatar_id);
if (found != mAvatarRenderMap.end())
{
mAvatarRenderMap.erase(found);
}
}
else
{
mAvatarRenderMap[avatar_id] = render_settings;
}
}
void FSAvatarRenderPersistence::loadAvatarRenderSettings()
{
const std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "avatar_render_settings.xml");
if (LLFile::isfile(filename))
{
llifstream file(filename.c_str());
if (!file.is_open())
{
LL_WARNS() << "Failed to open avatar render settings file." << LL_ENDL;
return;
}
LLSD data;
LLSDSerialize::fromXMLDocument(data, file);
file.close();
mAvatarRenderMap.clear();
for (LLSD::map_const_iterator it = data.beginMap(); it != data.endMap(); ++it)
{
LLUUID avatar_id(it->first);
LLVOAvatar::VisualMuteSettings render_settings = (LLVOAvatar::VisualMuteSettings)it->second.asInteger();
mAvatarRenderMap[avatar_id] = render_settings;
}
}
}
void FSAvatarRenderPersistence::saveAvatarRenderSettings()
{
LL_INFOS() << "Saving avatar render settings..." << LL_ENDL;
const std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "avatar_render_settings.xml");
LLSD data(LLSD::emptyMap());
for (avatar_render_setting_t::iterator it = mAvatarRenderMap.begin(); it != mAvatarRenderMap.end(); ++it)
{
data[it->first.asString()] = (S32)it->second;
}
llofstream file(filename.c_str());
if (!file.is_open())
{
LL_WARNS() << "Unable to save avatar render settings!" << LL_ENDL;
return;
}
LLSDSerialize::toPrettyXML(data, file);
file.close();
}

View File

@ -0,0 +1,57 @@
/**
* @file fsavatarrenderpersistence.h
* @brief Firestorm avatar render settings persistence
*
* $LicenseInfo:firstyear=2016&license=viewerlgpl$
* Copyright (c) 2016 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
*
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
* http://www.firestormviewer.org
* $/LicenseInfo$
*/
#ifndef FS_AVATARRENDERPERSISTENCE_H
#define FS_AVATARRENDERPERSISTENCE_H
#include "llsingleton.h"
#include "llvoavatar.h"
class FSAvatarRenderPersistence
: public LLSingleton<FSAvatarRenderPersistence>
{
LOG_CLASS(FSAvatarRenderPersistence);
friend class LLSingleton<FSAvatarRenderPersistence>;
friend class FSPanelPreferenceBackup;
public:
void init();
LLVOAvatar::VisualMuteSettings getAvatarRenderSettings(const LLUUID& avatar_id);
void setAvatarRenderSettings(const LLUUID& avatar_id, LLVOAvatar::VisualMuteSettings render_settings);
private:
FSAvatarRenderPersistence();
virtual ~FSAvatarRenderPersistence();
void loadAvatarRenderSettings();
void saveAvatarRenderSettings();
typedef std::map<LLUUID, LLVOAvatar::VisualMuteSettings> avatar_render_setting_t;
avatar_render_setting_t mAvatarRenderMap;
};
#endif // FS_AVATARRENDERPERSISTENCE_H

View File

@ -740,10 +740,11 @@ protected:
void showInfoCtrl()
{
const bool isVisible = !mAvatarID.isNull() && !mFrom.empty() && (CHAT_SOURCE_SYSTEM != mSourceType || mType == CHAT_TYPE_RADAR);
// const bool isVisible = !mAvatarID.isNull() && !mFrom.empty() && (CHAT_SOURCE_SYSTEM != mSourceType || mType == CHAT_TYPE_RADAR);;
// [RLVa:KB] - Checked: 2010-04-22 (RLVa-1.2.2a) | Added: RLVa-1.2.0f
if (isVisible && mShowInfoCtrl)
const bool isVisible = mShowInfoCtrl && !mAvatarID.isNull() && !mFrom.empty() && (CHAT_SOURCE_SYSTEM != mSourceType || mType == CHAT_TYPE_RADAR);;
// [/RLVa:KB]
if (isVisible)
{
const LLRect sticky_rect = mUserNameTextBox->getRect();
S32 icon_x = llmin(sticky_rect.mLeft + mUserNameTextBox->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3);

View File

@ -38,6 +38,7 @@
#include "llmutelist.h"
#include "llnotificationmanager.h"
#include "lltooldraganddrop.h"
#include "lltrans.h"
#include "llviewerinventory.h"
#include "llviewernetwork.h"
#include "llviewerobject.h"

View File

@ -1432,6 +1432,10 @@ std::string LLGridManager::getAppSLURLBase(const std::string& grid)
{
ret = mGridList[grid][GRID_APP_SLURL_BASE].asString();
}
else if (grid == INWORLDZ_URI)
{
ret = "inworldz:///app";
}
else
{
std::string app_base;
@ -1463,6 +1467,6 @@ std::string LLGridManager::getAppSLURLBase(const std::string& grid)
ret = llformat(app_base.c_str(), grid_norm.c_str());
}
LL_DEBUGS("GridManager") << "App slurl base: " << ret << LL_ENDL;
LL_DEBUGS("GridManager") << "App slurl base: " << ret << " - grid = " << grid << LL_ENDL;
return ret;
}

View File

@ -70,6 +70,9 @@ const std::string GRID_SLURL_BASE = "slurl_base";
const std::string GRID_APP_SLURL_BASE = "app_slurl_base";
// </Opensim>
// Inworldz special
#define INWORLDZ_URI "inworldz.com:8002"
class GridInfoRequestResponder;
// <AW opensim>

View File

@ -52,14 +52,17 @@ const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info";
const char* LLSLURL::WWW_SLURL_COM = "www.slurl.com";
const char* LLSLURL::MAPS_SECONDLIFE_COM = "maps.secondlife.com";
// <AW: opensim>
const char* LLSLURL::SLURL_COM = "slurl.com";
const char* LLSLURL::SLURL_APP_PATH = "app";
const char* LLSLURL::SLURL_SECONDLIFE_PATH = "secondlife";
const char* LLSLURL::SLURL_REGION_PATH = "region";
const char* LLSLURL::SIM_LOCATION_HOME = "home";
const char* LLSLURL::SIM_LOCATION_LAST = "last";
// </AW: opensim>
// Inworldz special
const char* LLSLURL::SLURL_INWORLDZ_SCHEME = "inworldz";
const char* LLSLURL::SLURL_IW_SCHEME = "iw";
const char* LLSLURL::PLACES_INWORLDZ_COM = "places.inworldz.com";
// resolve a simstring from a slurl
LLSLURL::LLSLURL(const std::string& slurl)
@ -212,7 +215,7 @@ LLSLURL::LLSLURL(const std::string& slurl)
if(mGrid.empty() && LLStartUp::getStartupState() == STATE_STARTED)
{
// we couldn't find the grid in the grid manager, so bail
LL_WARNS() << "unable to find grid" << LL_ENDL;
LL_WARNS("SLURL") << "unable to find grid" << LL_ENDL;
return;
}
// set the type as appropriate.
@ -241,6 +244,55 @@ LLSLURL::LLSLURL(const std::string& slurl)
path_array.insert(0, slurl_uri.hostNameAndPort());
}
}
else if (slurl_uri.scheme() == LLSLURL::SLURL_INWORLDZ_SCHEME ||
slurl_uri.scheme() == LLSLURL::SLURL_IW_SCHEME)
{
LL_DEBUGS("SLURL") << "inworldz scheme" << LL_ENDL;
mGrid = INWORLDZ_URI;
if (path_array[0].asString() == LLSLURL::SLURL_APP_PATH)
{
// it's in the form iw://<grid>/(app)
// so parse the grid name to derive the grid ID
if (!slurl_uri.hostNameAndPort().empty())
{
LL_DEBUGS("SLURL") << "(inworldz|iw)://<grid>/app" << LL_ENDL;
mGrid = LLGridManager::getInstance()->getGridByProbing(slurl_uri.hostNameAndPort());
if (mGrid.empty())
{
mGrid = LLGridManager::getInstance()->getGridByProbing(slurl_uri.hostName());
}
}
else if (path_array[0].asString() == LLSLURL::SLURL_APP_PATH)
{
LL_DEBUGS("SLURL") << "(inworldz|iw):///app" << LL_ENDL;
// for app style slurls, where no grid name is specified, assume the currently
// selected or logged in grid.
mGrid = LLGridManager::getInstance()->getGridId();
}
if (mGrid.empty() && LLStartUp::getStartupState() == STATE_STARTED)
{
// we couldn't find the grid in the grid manager, so bail
LL_WARNS("SLURL")<<"unable to find grid"<<LL_ENDL;
return;
}
mType = APP;
path_array.erase(0);
}
else
{
// it wasn't a /inworldz/<region> or /app/<params>, so it must be iw://<region>
// therefore the hostname will be the region name, and it's a location type
mType = LOCATION;
// 'normalize' it so the region name is in fact the head of the path_array
path_array.insert(0, slurl_uri.hostName());
}
}
else if((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME)
|| (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME)
|| (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME)
@ -257,6 +309,13 @@ LLSLURL::LLSLURL(const std::string& slurl)
else
mGrid = default_grid;
}
// places.inworldz.com isn't your regular everyday slurl
else if (slurl_uri.hostName() == LLSLURL::PLACES_INWORLDZ_COM)
{
// likewise, places.inworldz.com implies inworldz and a location
mGrid = INWORLDZ_URI;
mType = LOCATION;
}
else
{
LL_DEBUGS("SLURL") << "slurl style Standalone" << LL_ENDL;
@ -330,14 +389,12 @@ LLSLURL::LLSLURL(const std::string& slurl)
path_array.erase(0);
// leave app appended.
}
// <AW: hop:// protocol>
else if ( slurl_uri.scheme() == LLSLURL::HOP_SCHEME)
{
LL_DEBUGS("SLURL") << "It's a location hop" << LL_ENDL;
mType = LOCATION;
}
// </AW: hop:// protocol>
else
else if (slurl_uri.hostName() != LLSLURL::PLACES_INWORLDZ_COM)
{
LL_DEBUGS("SLURL") << "Not a valid https/http/x-grid-location-info slurl " << slurl << LL_ENDL;
// not a valid https/http/x-grid-location-info slurl, so it'll likely just be a URL

View File

@ -53,6 +53,11 @@ public:
static const char* SLURL_APP_PATH;
static const char* SLURL_REGION_PATH;
// Inworldz special
static const char* SLURL_INWORLDZ_SCHEME;
static const char* SLURL_IW_SCHEME;
static const char* PLACES_INWORLDZ_COM;
enum SLURL_TYPE
{
INVALID,

View File

@ -98,14 +98,17 @@
#include "stringize.h"
#include "boost/foreach.hpp"
#include "llcorehttputil.h"
// [RLVa:KB] - Checked: 2011-11-04 (RLVa-1.4.4a)
#include "rlvactions.h"
#include "rlvhandler.h"
#include "rlvhelper.h"
#include "rlvui.h"
// [/RLVa:KB]
// Firestorm includes
#include "fslslbridge.h"
#include "kcwlinterface.h"
#include "llpresetsmanager.h"
#include "rlvactions.h"
#include "rlvhandler.h"
#include "rlvhelper.h"
#include "NACLantispam.h"
using namespace LLAvatarAppearanceDefines;
@ -216,7 +219,10 @@ private:
class LLTeleportRequestViaLocationLookAt : public LLTeleportRequestViaLocation
{
public:
LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal);
// [RLVa:KB] - Checked: RLVa-2.0.0
LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal, const LLVector3& look_at);
// [/RLVa:KB]
// LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal);
virtual ~LLTeleportRequestViaLocationLookAt();
virtual bool canRestartTeleport();
@ -225,8 +231,14 @@ public:
virtual void restartTeleport();
protected:
// [RLVa:KB] - Checked: RLVa-2.0.0
const LLVector3& getLookAt() const { return mLookAt; }
// [/RLVa:KB]
private:
// [RLVa:KB] - Checked: RLVa-2.0.0
LLVector3 mLookAt;
// [/RLVa:KB]
};
@ -2300,7 +2312,10 @@ std::ostream& operator<<(std::ostream &s, const LLAgent &agent)
//-----------------------------------------------------------------------------
BOOL LLAgent::needsRenderAvatar()
{
if (gAgentCamera.cameraMouselook() && !LLVOAvatar::sVisibleInFirstPerson)
// if (gAgentCamera.cameraMouselook() && !LLVOAvatar::sVisibleInFirstPerson)
// [RLVa:KB] - Checked: RLVa-2.0.2
if ( (gAgentCamera.cameraMouselook() && !LLVOAvatar::sVisibleInFirstPerson) || (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWSELF)) )
// [/RLVa:KB]
{
return FALSE;
}
@ -2311,7 +2326,10 @@ BOOL LLAgent::needsRenderAvatar()
// TRUE if we need to render your own avatar's head.
BOOL LLAgent::needsRenderHead()
{
return (LLVOAvatar::sVisibleInFirstPerson && LLPipeline::sReflectionRender) || (mShowAvatar && !gAgentCamera.cameraMouselook());
// [RLVa:KB] - Checked: RLVa-2.0.2
return ((LLVOAvatar::sVisibleInFirstPerson && LLPipeline::sReflectionRender) || (mShowAvatar && !gAgentCamera.cameraMouselook())) && (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWSELFHEAD));
// [/RLVa:KB]
// return (LLVOAvatar::sVisibleInFirstPerson && LLPipeline::sReflectionRender) || (mShowAvatar && !gAgentCamera.cameraMouselook());
}
//-----------------------------------------------------------------------------
@ -2934,15 +2952,11 @@ void LLAgent::onAnimStop(const LLUUID& id)
}
else if (id == ANIM_AGENT_AWAY)
{
// clearAFK();
// [RLVa:KB] - Checked: 2010-05-03 (RLVa-1.2.0g) | Added: RLVa-1.1.0g
#ifdef RLV_EXTENSION_CMD_ALLOWIDLE
if (!gRlvHandler.hasBehaviour(RLV_BHVR_ALLOWIDLE))
clearAFK();
#else
clearAFK();
#endif // RLV_EXTENSION_CMD_ALLOWIDLE
// [/RLVa:KB]
// clearAFK();
}
else if (id == ANIM_AGENT_STANDUP)
{
@ -4627,10 +4641,13 @@ void LLAgent::handleTeleportFailed()
}
}
void LLAgent::teleportRequest(
const U64& region_handle,
const LLVector3& pos_local,
bool look_at_from_camera)
//void LLAgent::teleportRequest(
// const U64& region_handle,
// const LLVector3& pos_local,
// bool look_at_from_camera)
// [RLVa:KB] - Checked: RLVa-2.0.0
void LLAgent::teleportRequest(const U64& region_handle, const LLVector3& pos_local, const LLVector3& look_at)
// [/RLVa:KB]
{
LLViewerRegion* regionp = getRegion();
bool is_local = (region_handle == regionp->getHandle());
@ -4646,11 +4663,11 @@ void LLAgent::teleportRequest(
msg->nextBlockFast(_PREHASH_Info);
msg->addU64("RegionHandle", region_handle);
msg->addVector3("Position", pos_local);
LLVector3 look_at(0,1,0);
if (look_at_from_camera)
{
look_at = LLViewerCamera::getInstance()->getAtAxis();
}
// LLVector3 look_at(0,1,0);
// if (look_at_from_camera)
// {
// look_at = LLViewerCamera::getInstance()->getAtAxis();
// }
msg->addVector3("LookAt", look_at);
sendReliableMessage();
}
@ -4763,13 +4780,10 @@ void LLAgent::restoreCanceledTeleportRequest()
void LLAgent::teleportViaLocation(const LLVector3d& pos_global)
{
// [RLVa:KB] - Checked: 2010-03-02 (RLVa-1.2.0c) | Modified: RLVa-1.2.0a
if ( (rlv_handler_t::isEnabled()) && (!RlvUtil::isForceTp()) )
// [RLVa:KB] - Checked: RLVa-2.0.0
if ( (RlvActions::isRlvEnabled()) && (!RlvUtil::isForceTp()) )
{
// If we're getting teleported due to @tpto we should disregard any @tploc=n or @unsit=n restrictions from the same object
if ( (gRlvHandler.hasBehaviourExcept(RLV_BHVR_TPLOC, gRlvHandler.getCurrentObject())) ||
( (isAgentAvatarValid()) && (gAgentAvatarp->isSitting()) &&
(gRlvHandler.hasBehaviourExcept(RLV_BHVR_UNSIT, gRlvHandler.getCurrentObject()))) )
if ( (RlvActions::isLocalTp(pos_global)) ? !RlvActions::canTeleportToLocal(pos_global) : !RlvActions::canTeleportToLocation() )
{
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_TELEPORT);
return;
@ -4844,25 +4858,37 @@ void LLAgent::doTeleportViaLocation(const LLVector3d& pos_global)
}
// Teleport to global position, but keep facing in the same direction
void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global)
// [RLVa:KB] - Checked: RLVa-2.0.0
void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global, const LLVector3& look_at)
{
// [RLVa:KB] - Checked: 2010-10-07 (RLVa-1.2.1f) | Added: RLVa-1.2.1f
// RELEASE-RLVa: [SL-2.2.0] Make sure this isn't used for anything except double-click teleporting
if ( (rlv_handler_t::isEnabled()) && (!RlvUtil::isForceTp()) &&
((gRlvHandler.hasBehaviour(RLV_BHVR_SITTP)) || (!RlvActions::canStand())) )
if ( (RlvActions::isRlvEnabled()) && (!RlvUtil::isForceTp()) )
{
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_TELEPORT);
return;
}
// [/RLVa:KB]
if ( (RlvActions::isLocalTp(pos_global)) ? !RlvActions::canTeleportToLocal(pos_global) : !RlvActions::canTeleportToLocation() )
{
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_TELEPORT);
return;
}
mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocationLookAt(pos_global));
if ( (gRlvHandler.getCurrentCommand()) && (RLV_BHVR_TPTO == gRlvHandler.getCurrentCommand()->getBehaviourType()) )
{
gRlvHandler.setCanCancelTp(false);
}
}
mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocationLookAt(pos_global, (look_at.isExactlyZero()) ? LLViewerCamera::getInstance()->getAtAxis() : look_at));
startTeleportRequest();
}
// [/RLVa:KB]
//void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global)
//{
// mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocationLookAt(pos_global));
// startTeleportRequest();
//}
void LLAgent::doTeleportViaLocationLookAt(const LLVector3d& pos_global)
// [RLVa:KB] - Checked: RLVa-2.0.0
void LLAgent::doTeleportViaLocationLookAt(const LLVector3d& pos_global, const LLVector3& look_at)
{
mbTeleportKeepsLookAt = true;
mbTeleportKeepsLookAt = look_at.isExactlyZero();
if(!gAgentCamera.isfollowCamLocked())
{
@ -4878,7 +4904,7 @@ void LLAgent::doTeleportViaLocationLookAt(const LLVector3d& pos_global)
}
// </FS:CR>
LLVector3 pos_local = (LLVector3)(pos_global - from_region_handle(region_handle));
teleportRequest(region_handle, pos_local, getTeleportKeepsLookAt());
teleportRequest(region_handle, pos_local, look_at);
// <FS:TT> Client LSL Bridge
if (FSLSLBridge::instance().canUseBridge())
@ -4896,6 +4922,21 @@ LLAgent::ETeleportState LLAgent::getTeleportState() const
return (mTeleportRequest && (mTeleportRequest->getStatus() == LLTeleportRequest::kFailed)) ?
TELEPORT_NONE : mTeleportState;
}
// [/RLVa:KB]
//void LLAgent::doTeleportViaLocationLookAt(const LLVector3d& pos_global, const LLVector3& look_at)
//{
// mbTeleportKeepsLookAt = true;
//
// if(!gAgentCamera.isfollowCamLocked())
// {
// gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); // detach camera form avatar, so it keeps direction
// }
//
// U64 region_handle = to_region_handle(pos_global);
// LLVector3 pos_local = (LLVector3)(pos_global - from_region_handle(region_handle));
// teleportRequest(region_handle, pos_local, look_at);
// teleportRequest(region_handle, pos_local, getTeleportKeepsLookAt());
//}
void LLAgent::setTeleportState(ETeleportState state)
@ -5402,11 +5443,18 @@ void LLTeleportRequestViaLocation::restartTeleport()
// LLTeleportRequestViaLocationLookAt
//-----------------------------------------------------------------------------
LLTeleportRequestViaLocationLookAt::LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal)
: LLTeleportRequestViaLocation(pPosGlobal)
// [RLVa:KB] - Checked: RLVa-2.0.0
LLTeleportRequestViaLocationLookAt::LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal, const LLVector3& look_at)
: LLTeleportRequestViaLocation(pPosGlobal), mLookAt(look_at)
{
LL_INFOS("Teleport") << "LLTeleportRequestViaLocationLookAt created" << LL_ENDL;
}
// [/RLVa:KB]
//LLTeleportRequestViaLocationLookAt::LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal)
// : LLTeleportRequestViaLocation(pPosGlobal)
//{
//}
LLTeleportRequestViaLocationLookAt::~LLTeleportRequestViaLocationLookAt()
{
@ -5422,13 +5470,19 @@ bool LLTeleportRequestViaLocationLookAt::canRestartTeleport()
void LLTeleportRequestViaLocationLookAt::startTeleport()
{
LL_INFOS("Teleport") << "LLTeleportRequestViaLocationLookAt::startTeleport" << LL_ENDL;
gAgent.doTeleportViaLocationLookAt(getPosGlobal());
// [RLVa:KB] - Checked: RLVa-2.0.0
gAgent.doTeleportViaLocationLookAt(getPosGlobal(), getLookAt());
// [/RLVa:KB]
// gAgent.doTeleportViaLocationLookAt(getPosGlobal());
}
void LLTeleportRequestViaLocationLookAt::restartTeleport()
{
LL_INFOS("Teleport") << "LLTeleportRequestViaLocationLookAt::restartTeleport" << LL_ENDL;
gAgent.doTeleportViaLocationLookAt(getPosGlobal());
// [RLVa:KB] - Checked: RLVa-2.0.0
gAgent.doTeleportViaLocationLookAt(getPosGlobal(), getLookAt());
// [/RLVa:KB]
// gAgent.doTeleportViaLocationLookAt(getPosGlobal());
}

View File

@ -721,7 +721,10 @@ public:
void teleportHome() { teleportViaLandmark(LLUUID::null); } // Go home
void teleportViaLure(const LLUUID& lure_id, BOOL godlike); // To an invited location
void teleportViaLocation(const LLVector3d& pos_global); // To a global location - this will probably need to be deprecated
void teleportViaLocationLookAt(const LLVector3d& pos_global);// To a global location, preserving camera rotation
// [RLVa:KB] - Checked: RLVa-2.0.0
void teleportViaLocationLookAt(const LLVector3d& pos_global, const LLVector3& look_at = LLVector3::zero);// To a global location, preserving camera rotation
// [/RLVa:KB]
// void teleportViaLocationLookAt(const LLVector3d& pos_global);// To a global location, preserving camera rotation
void teleportCancel(); // May or may not be allowed by server
void restoreCanceledTeleportRequest();
bool getTeleportKeepsLookAt() { return mbTeleportKeepsLookAt; } // Whether look-at reset after teleport
@ -765,13 +768,19 @@ private:
bool hasPendingTeleportRequest();
void startTeleportRequest();
void teleportRequest(const U64& region_handle,
const LLVector3& pos_local, // Go to a named location home
bool look_at_from_camera = false);
// [RLVa:KB] - Checked: RLVa-2.0.0
void teleportRequest(const U64& region_handle, const LLVector3& pos_local, const LLVector3& look_at = LLVector3(0, 1, 0));
// [/RLVa:KB]
// void teleportRequest(const U64& region_handle,
// const LLVector3& pos_local, // Go to a named location home
// bool look_at_from_camera = false);
void doTeleportViaLandmark(const LLUUID& landmark_id); // Teleport to a landmark
void doTeleportViaLure(const LLUUID& lure_id, BOOL godlike); // To an invited location
void doTeleportViaLocation(const LLVector3d& pos_global); // To a global location - this will probably need to be deprecated
void doTeleportViaLocationLookAt(const LLVector3d& pos_global);// To a global location, preserving camera rotation
// [RLVa:KB] - Checked: RLVa-2.0.0
void doTeleportViaLocationLookAt(const LLVector3d& pos_global, const LLVector3& look_at);// To a global location, preserving camera rotation
// [/RLVa:KB]
// void doTeleportViaLocationLookAt(const LLVector3d& pos_global);// To a global location, preserving camera rotation
void handleTeleportFinished();
void handleTeleportFailed();

View File

@ -217,10 +217,18 @@ void LLAgentCamera::init()
mCameraOffsetInitial[CAMERA_PRESET_REAR_VIEW] = gSavedSettings.getControl("CameraOffsetRearView");
mCameraOffsetInitial[CAMERA_PRESET_FRONT_VIEW] = gSavedSettings.getControl("CameraOffsetFrontView");
mCameraOffsetInitial[CAMERA_PRESET_GROUP_VIEW] = gSavedSettings.getControl("CameraOffsetGroupView");
// [RLVa:KB] - Checked: RLVa-2.0.0
mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW] = gSavedSettings.declareVec3("CameraOffsetRLVaView", LLVector3(mCameraOffsetInitial[CAMERA_PRESET_REAR_VIEW]->getDefault()), "Declared in code", LLControlVariable::PERSIST_NO);
mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->setHiddenFromSettingsEditor(true);
// [/RLVa:KB]
mFocusOffsetInitial[CAMERA_PRESET_REAR_VIEW] = gSavedSettings.getControl("FocusOffsetRearView");
mFocusOffsetInitial[CAMERA_PRESET_FRONT_VIEW] = gSavedSettings.getControl("FocusOffsetFrontView");
mFocusOffsetInitial[CAMERA_PRESET_GROUP_VIEW] = gSavedSettings.getControl("FocusOffsetGroupView");
// [RLVa:KB] - Checked: RLVa-2.0.0
mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW] = gSavedSettings.declareVec3("FocusOffsetRLVaView", LLVector3(mFocusOffsetInitial[CAMERA_PRESET_REAR_VIEW]->getDefault()), "Declared in code", LLControlVariable::PERSIST_NO);
mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->setHiddenFromSettingsEditor(true);
// [/RLVa:KB]
mCameraCollidePlane.clearVec();
mCurrentCameraDistance = getCameraOffsetInitial().magVec() * gSavedSettings.getF32("CameraOffsetScale");
@ -830,7 +838,13 @@ void LLAgentCamera::setCameraZoomFraction(F32 fraction)
LLVector3d camera_offset_dir = mCameraFocusOffsetTarget;
camera_offset_dir.normalize();
mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
// [RLVa:KB] - Checked: 2.0.0
const LLVector3d focus_offset_target = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
if ( (RlvActions::isRlvEnabled()) && (!allowFocusOffsetChange(focus_offset_target)) )
return;
mCameraFocusOffsetTarget = focus_offset_target;
// [/RLVa:KB]
// mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
}
startCameraAnimation();
}
@ -962,6 +976,11 @@ void LLAgentCamera::cameraZoomIn(const F32 fraction)
new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
}
// [RLVa:KB] - Checked: 2.0.0
if ( (RlvActions::isRlvEnabled()) && (!allowFocusOffsetChange(new_distance * camera_offset_unit)) )
return;
// [/RLVa:KB]
mCameraFocusOffsetTarget = new_distance * camera_offset_unit;
}
@ -1033,6 +1052,11 @@ void LLAgentCamera::cameraOrbitIn(const F32 meters)
new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
}
// [RLVa:KB] - Checked: 2.0.0
if ( (RlvActions::isRlvEnabled()) && (!allowFocusOffsetChange(new_distance * camera_offset_unit)) )
return;
// [/RLVa:KB]
// Compute new camera offset
mCameraFocusOffsetTarget = new_distance * camera_offset_unit;
cameraZoomIn(1.f);
@ -1177,6 +1201,14 @@ void LLAgentCamera::updateCamera()
mCameraUpVector = LLVector3::z_axis;
//LLVector3 camera_skyward(0.f, 0.f, 1.f);
// [RLVa:KB] - Checked: RLVa-2.0.0
// Set focus back on our avie if something changed it
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SETCAM_UNLOCK)) && (cameraThirdPerson()) && (!getFocusOnAvatar()) )
{
setFocusOnAvatar(TRUE, FALSE);
}
// [/RLVa:KB]
U32 camera_mode = mCameraAnimating ? mLastCameraMode : mCameraMode;
validateFocusObject();
@ -1957,6 +1989,44 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
// }
// [RLVa:KB] - Checked: RLVa-2.0.0
if ( (CAMERA_MODE_THIRD_PERSON == mCameraMode) && (RlvActions::isRlvEnabled()) && (RlvActions::isCameraDistanceClamped()) )
{
m_fRlvMinDist = m_fRlvMaxDist = false;
// Av-locked | Focus-locked | Result
// ===================================================
// T | T | skip focus => slam av
// T | F | skip focus => slam av
// F | T | skip av => slam focus
// F | F | clamp focus then av
bool fCamAvDistClamped, fCamAvDistLocked = false; float nCamAvDistLimitMin, nCamAvDistLimitMax;
if (fCamAvDistClamped = RlvActions::getCameraAvatarDistanceLimits(nCamAvDistLimitMin, nCamAvDistLimitMax))
fCamAvDistLocked = nCamAvDistLimitMin == nCamAvDistLimitMax;
bool fCamOriginDistClamped, fCamOriginDistLocked = false; float nCamOriginDistLimitMin, nCamOriginDistLimitMax;
if (fCamOriginDistClamped = RlvActions::getCameraOriginDistanceLimits(nCamOriginDistLimitMin, nCamOriginDistLimitMax))
fCamOriginDistLocked = nCamOriginDistLimitMin == nCamOriginDistLimitMax;
// Check focus distance limits
if ( (fCamOriginDistClamped) && (!fCamAvDistLocked) )
{
const LLVector3 offsetCameraLocal = mCameraZoomFraction * getCameraOffsetInitial() * gSavedSettings.getF32("CameraOffsetScale");
const LLVector3d offsetCamera(gAgent.getFrameAgent().rotateToAbsolute(offsetCameraLocal));
const LLVector3d posFocusCam = frame_center_global + head_offset + offsetCamera;
if (clampCameraPosition(camera_position_global, posFocusCam, nCamOriginDistLimitMin, nCamOriginDistLimitMax))
isConstrained = TRUE;
}
// Check avatar distance limits
if ( (fCamAvDistClamped) && (fCamAvDistLocked || !fCamOriginDistClamped) )
{
const LLVector3d posAvatarCam = gAgent.getPosGlobalFromAgent( (isAgentAvatarValid()) ? gAgentAvatarp->mHeadp->getWorldPosition() : gAgent.getPositionAgent() );
if (clampCameraPosition(camera_position_global, posAvatarCam, nCamAvDistLimitMin, nCamAvDistLimitMax))
isConstrained = TRUE;
}
}
// [/RLVa:KB]
// Don't let camera go underground
F32 camera_min_off_ground = getCameraMinOffGround();
@ -1977,6 +2047,49 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
return camera_position_global;
}
// [RLVa:KB] - Checked: RLVa-2.0.0
bool LLAgentCamera::allowFocusOffsetChange(const LLVector3d& offsetFocus)
{
if (RlvActions::isCameraDistanceClamped())
{
if ( (CAMERA_MODE_THIRD_PERSON == getCameraMode()) && ((m_fRlvMinDist) || (m_fRlvMaxDist)) )
{
const LLVector3d posFocusGlobal = calcFocusPositionTargetGlobal();
// Don't allow moving the focus offset if at minimum and moving closer (or if at maximum and moving further) to prevent camera warping
F32 nCurDist = llabs((posFocusGlobal + mCameraFocusOffsetTarget - m_posRlvRefGlobal).magVec());
F32 nNewDist = llabs((posFocusGlobal + offsetFocus - m_posRlvRefGlobal).magVec());
if ( ((m_fRlvMaxDist) && (nNewDist > nCurDist)) || ((m_fRlvMinDist) && (nNewDist < nCurDist)) )
return false;
}
}
return true;
}
bool LLAgentCamera::clampCameraPosition(LLVector3d& posCamGlobal, const LLVector3d posCamRefGlobal, float nDistMin, float nDistMax)
{
const LLVector3d offsetCamera = posCamGlobal - posCamRefGlobal;
F32 nCamAvDist = llabs(offsetCamera.magVec()), nDistMult = NAN;
if (nCamAvDist > nDistMax)
{
nDistMult = nDistMax / nCamAvDist;
m_fRlvMaxDist = true;
}
else if (nCamAvDist < nDistMin)
{
nDistMult = nDistMin / nCamAvDist;
m_fRlvMinDist = true;
}
if (!isnan(nDistMult))
{
posCamGlobal = posCamRefGlobal + nDistMult * offsetCamera;
m_posRlvRefGlobal = posCamRefGlobal;
return true;
}
return false;
}
// [/RLVa:KB]
LLVector3 LLAgentCamera::getCameraOffsetInitial()
{
@ -2110,6 +2223,10 @@ void LLAgentCamera::resetCamera()
void LLAgentCamera::changeCameraToMouselook(BOOL animate)
{
if (!gSavedSettings.getBOOL("EnableMouselook")
// [RLVa:KB] - Checked: RLVa-2.0.0
|| ( (RlvActions::isRlvEnabled()) && (!RlvActions::canChangeToMouselook()) )
// [/RLVa:KB]
|| LLViewerJoystick::getInstance()->getOverrideCamera())
{
return;
@ -2404,6 +2521,26 @@ void LLAgentCamera::changeCameraToCustomizeAvatar()
void LLAgentCamera::switchCameraPreset(ECameraPreset preset)
{
// [RLVa:KB] - Checked: RLVa-2.0.0
if (RlvActions::isRlvEnabled())
{
// Don't allow changing away from the our view if an object is restricting it
if (RlvActions::isCameraPresetLocked())
preset = CAMERA_RLV_SETCAM_VIEW;
// Don't reset anything if our view is already current
if ( (CAMERA_RLV_SETCAM_VIEW == preset) && (CAMERA_RLV_SETCAM_VIEW == mCameraPreset) )
return;
// Reset our view when switching away
if (CAMERA_RLV_SETCAM_VIEW != preset)
{
mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->resetToDefault();
mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->resetToDefault();
}
}
// [/RLVa:KB]
//zoom is supposed to be reset for the front and group views
mCameraZoomFraction = 1.f;

View File

@ -56,7 +56,12 @@ enum ECameraPreset
CAMERA_PRESET_FRONT_VIEW,
/** "Above and to the left, over the shoulder, pulled back a little on the zoom" */
CAMERA_PRESET_GROUP_VIEW
CAMERA_PRESET_GROUP_VIEW,
// [RLVa:KB] - Checked: RLVa-2.0.0
/* Used by RLVa */
CAMERA_RLV_SETCAM_VIEW
// [/RLVa:KB]
};
//------------------------------------------------------------------------
@ -305,6 +310,18 @@ public:
F32 mHUDTargetZoom; // Target zoom level for HUD objects (used when editing)
F32 mHUDCurZoom; // Current animated zoom level for HUD objects
// [RLVa:KB] - Checked: RLVa-2.0.0
//--------------------------------------------------------------------
// RLVa
//--------------------------------------------------------------------
protected:
bool allowFocusOffsetChange(const LLVector3d& offsetFocus);
bool clampCameraPosition(LLVector3d& posCamGlobal, const LLVector3d posCamRefGlobal, float nDistMin, float nDistMax);
bool m_fRlvMaxDist; // True if the camera is at max distance
bool m_fRlvMinDist; // True if the camera is at min distance
LLVector3d m_posRlvRefGlobal; // Current reference point for distance calculations
// [/RLVa:KB]
/********************************************************************************
** **

View File

@ -186,7 +186,7 @@ void LLAgentListener::requestSit(LLSD const & event_data) const
// [RLVa:KB] - Checked: 2010-03-06 (RLVa-1.2.0c) | Modified: RLVa-1.1.0j
// TODO-RLVa: [RLVa-1.2.1] Figure out how to call this?
if ( (rlv_handler_t::isEnabled()) && (!gRlvHandler.canSit(object)) )
if ( (rlv_handler_t::isEnabled()) && (!RlvActions::canSit(object)) )
{
return;
}

View File

@ -109,7 +109,9 @@
callWindowUnhide();
}
- (NSApplicationDelegateReply) applicationShouldTerminate:(NSApplication *)sender
//<FS:TS> This got changed at some point in the SDK.
//- (NSApplicationDelegateReply) applicationShouldTerminate:(NSApplication *)sender
- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender
{
if (!runMainLoop())
{

View File

@ -59,6 +59,7 @@
#include "llappviewer.h"
#include "llcoros.h"
#include "lleventcoro.h"
#include "llavatarpropertiesprocessor.h"
#include "llavatarpropertiesprocessor.h"
@ -67,6 +68,7 @@
#include "rlvhelper.h"
#include "rlvlocks.h"
// [/RLVa:KB]
#include "fslslbridge.h"
#if LL_MSVC
@ -1323,23 +1325,19 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
// [SL:KB] - Patch: Appearance-WearableDuplicateAssets | Checked: 2015-06-30 (Catznip-3.7)
static void removeDuplicateWearableItemsByAssetID(LLInventoryModel::item_array_t& items)
{
struct is_duplicate_asset
{
bool operator()(const LLViewerInventoryItem* pItem)
std::set<LLUUID> idsAsset;
items.erase(std::remove_if(items.begin(), items.end(),
[&idsAsset](const LLViewerInventoryItem* pItem)
{
if (pItem->isWearableType())
{
const LLUUID& idAsset = pItem->getAssetUUID();
if ( (idAsset.notNull()) && (m_idsAsset.end() != m_idsAsset.find(idAsset)) )
if ( (idAsset.notNull()) && (idsAsset.end() != idsAsset.find(idAsset)) )
return true;
m_idsAsset.insert(idAsset);
idsAsset.insert(idAsset);
}
return false;
}
protected:
std::set<LLUUID> m_idsAsset;
};
items.erase(std::remove_if(items.begin(), items.end(), is_duplicate_asset()), items.end());
}), items.end());
}
// [/SL:KB]
@ -2083,6 +2081,8 @@ void LLAppearanceMgr::filterWearableItems(
}
}
//void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
// [RLVa:KB] - Checked: 2010-03-05 (RLVa-1.2.0)
void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
{
LLViewerInventoryCategory *pcat = gInventory.getCategory(category);
@ -2617,9 +2617,8 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool enforce_item_restrictions,
std::set<LLUUID> pendingAttachments;
if (LLAttachmentsMgr::instance().getPendingAttachments(pendingAttachments))
{
for (std::set<LLUUID>::const_iterator itAttachItem = pendingAttachments.begin(); itAttachItem != pendingAttachments.end(); ++itAttachItem)
for (const LLUUID& idAttachItem : pendingAttachments)
{
const LLUUID& idAttachItem = *itAttachItem;
if ( (!gAgentAvatarp->isWearingAttachment(idAttachItem)) || (isLinkedInCOF(idAttachItem)) )
{
LLAttachmentsMgr::instance().clearPendingAttachmentLink(idAttachItem);

View File

@ -95,9 +95,8 @@
// [SL:KB] - Patch: Appearance-Misc | Checked: 2013-02-12 (Catznip-3.4)
#include "llappearancemgr.h"
// [/SL:KB]
// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.4.0)
// [RLVa:KB] - Checked: 2010-05-03 (RLVa-1.2.0g)
#include "rlvactions.h"
#include "rlvhelper.h"
#include "rlvhandler.h"
// [/RLVa:KB]
@ -543,17 +542,13 @@ void idle_afk_check()
{
// check idle timers
F32 current_idle = gAwayTriggerTimer.getElapsedTimeF32();
// F32 afk_timeout = gSavedSettings.getS32("AFKTimeout");
// [RLVa:KB] - Checked: 2010-05-03 (RLVa-1.2.0g) | Modified: RLVa-1.2.0g
#ifdef RLV_EXTENSION_CMD_ALLOWIDLE
// Enforce an idle time of 30 minutes if @allowidle=n restricted
// <FS:CR> Cache frequently hit location
static LLCachedControl<S32> sAFKTimeout(gSavedSettings, "AFKTimeout");
// [RLVa:KB] - Checked: 2010-05-03 (RLVa-1.2.0g) | Modified: RLVa-1.2.0g
// Enforce an idle time of 30 minutes if @allowidle=n restricted
S32 afk_timeout = (!gRlvHandler.hasBehaviour(RLV_BHVR_ALLOWIDLE)) ? sAFKTimeout : 60 * 30;
#else
static LLCachedControl<S32> afk_timeout(gSavedSettings, "AFKTimeout"); // <FS:CR>
#endif // RLV_EXTENSION_CMD_ALLOWIDLE
// [/RLVa:KB]
// F32 afk_timeout = gSavedSettings.getS32("AFKTimeout");
// <FS:CR> Explicit conversions just cos.
//if (afk_timeout && (current_idle > afk_timeout) && ! gAgent.getAFK())
if (static_cast<S32>(afk_timeout) && (current_idle > static_cast<F32>(afk_timeout)) && ! gAgent.getAFK())
@ -3903,16 +3898,28 @@ LLSD LLAppViewer::getViewerInfo() const
LLViewerRegion* region = gAgent.getRegion();
if (region)
{
LLVector3d pos = gAgent.getPositionGlobal();
info["POSITION"] = ll_sd_from_vector3d(pos);
info["POSITION_LOCAL"] = ll_sd_from_vector3(gAgent.getPosAgentFromGlobal(pos));
info["REGION"] = gAgent.getRegion()->getName();
info["HOSTNAME"] = gAgent.getRegion()->getHost().getHostName();
info["HOSTIP"] = gAgent.getRegion()->getHost().getString();
// [RLVa:KB] - Checked: 2014-02-24 (RLVa-1.4.10)
if (RlvActions::canShowLocation())
{
// [/RLVa:KB]
LLVector3d pos = gAgent.getPositionGlobal();
info["POSITION"] = ll_sd_from_vector3d(pos);
info["POSITION_LOCAL"] = ll_sd_from_vector3(gAgent.getPosAgentFromGlobal(pos));
info["REGION"] = gAgent.getRegion()->getName();
info["HOSTNAME"] = gAgent.getRegion()->getHost().getHostName();
info["HOSTIP"] = gAgent.getRegion()->getHost().getString();
// info["SERVER_VERSION"] = gLastVersionChannel;
LLSLURL slurl;
LLAgentUI::buildSLURL(slurl);
info["SLURL"] = slurl.getSLURLString();
// [RLVa:KB] - Checked: 2014-02-24 (RLVa-1.4.10)
}
else
{
info["REGION"] = RlvStrings::getString(RLV_STRING_HIDDEN_REGION);
}
info["SERVER_VERSION"] = gLastVersionChannel;
LLSLURL slurl;
LLAgentUI::buildSLURL(slurl);
info["SLURL"] = slurl.getSLURLString();
// [/RLVa:KB]
}
// CPU
@ -3932,7 +3939,7 @@ LLSD LLAppViewer::getViewerInfo() const
#endif
// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.2.0)
info["RLV_VERSION"] = (RlvActions::isRlvEnabled()) ? RlvStrings::getVersionAbout() : "(disabled)";
info["RLV_VERSION"] = (rlv_handler_t::isEnabled()) ? RlvStrings::getVersionAbout() : "(disabled)";
// [/RLVa:KB]
info["OPENGL_VERSION"] = (const char*)(glGetString(GL_VERSION));
info["LIBCURL_VERSION"] = LLCore::LLHttp::getCURLVersion();
@ -4114,13 +4121,9 @@ std::string LLAppViewer::getViewerInfoString() const
if (info.has("REGION"))
{
// [RLVa:KB] - Checked: 2014-02-24 (RLVa-1.4.10)
support << "\n\n";
if (RlvActions::canShowLocation())
support << LLTrans::getString("AboutPosition", args);
else
support << RlvStrings::getString(RLV_STRING_HIDDEN_REGION);
support << "\n\n" << LLTrans::getString( (RlvActions::canShowLocation()) ? "AboutPosition" : "AboutPositionRLVShowLoc", args);
// [/RLVa:KB]
//support << "\n\n" << LLTrans::getString("AboutPosition", args);
// support << "\n\n" << LLTrans::getString("AboutPosition", args);
}
support << "\n\n" << LLTrans::getString("AboutSystem", args);
support << "\n";

View File

@ -297,7 +297,7 @@ void LLAppViewerMacOSX::initCrashReporting(bool reportFreeze)
std::string appname = gDirUtilp->getExecutableFilename();
std::string str[] = { "-pid", pid_str.str(), "-dumpdir", logdir, "-procname", appname.c_str() };
std::vector< std::string > args( str, str + ( sizeof ( str ) / sizeof ( std::string ) ) );
LL_WARNS() << "about to launch mac-crash-logger" << pid_str << " " << logdir << " " << appname << LL_ENDL;
LL_WARNS() << "about to launch mac-crash-logger" << pid_str.str() << " " << logdir << " " << appname << LL_ENDL;
launchApplication(&command_str, &args);
}

View File

@ -74,6 +74,11 @@
#include "llsidepanelinventory.h"
#include "llavatarname.h"
#include "llagentui.h"
// [RLVa:KB] - Checked: 2011-04-11 (RLVa-1.3.0)
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvhandler.h"
// [/RLVa:KB]
// Firestorm includes
#include "fsfloaterim.h"
@ -91,9 +96,6 @@
#include "llviewerparcelmgr.h"
#include "llviewerwindow.h" // For opening logs externally
#include "llworld.h"
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvhandler.h"
// Flags for kick message
const U32 KICK_FLAGS_DEFAULT = 0x0;
@ -243,7 +245,7 @@ void LLAvatarActions::startIM(const LLUUID& id)
return;
// [RLVa:KB] - Checked: 2013-05-09 (RLVa-1.4.9)
if ( (!RlvActions::canStartIM(id)) && (!RlvActions::hasOpenP2PSession(id)) )
if (!RlvActions::canStartIM(id))
{
make_ui_sound("UISndInvalidOp");
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTIM, LLSD().with("RECIPIENT", LLSLURL("agent", id, "completename").getSLURLString()));
@ -288,7 +290,7 @@ void LLAvatarActions::startCall(const LLUUID& id)
}
// [RLVa:KB] - Checked: 2013-05-09 (RLVa-1.4.9)
if ( (!RlvActions::canStartIM(id)) && (!RlvActions::hasOpenP2PSession(id)) )
if (!RlvActions::canStartIM(id))
{
make_ui_sound("UISndInvalidOp");
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTIM, LLSD().with("RECIPIENT", LLSLURL("agent", id, "completename").getSLURLString()));
@ -556,6 +558,17 @@ void LLAvatarActions::teleport_request_callback(const LLSD& notification, const
{
LLMessageSystem* msg = gMessageSystem;
// [RLVa:KB] - Checked: RLVa-2.0.0
const LLUUID idRecipient = notification["substitutions"]["uuid"];
std::string strMessage = response["message"];
// Filter the request message if the recipients is IM-blocked
if ( (!RlvActions::isRlvEnabled()) || ((RlvActions::canStartIM(idRecipient)) && (RlvActions::canSendIM(idRecipient))) )
{
strMessage = RlvStrings::getString(RLV_STRING_HIDDEN);
}
// [/RLVa:KB]
msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
@ -573,7 +586,10 @@ void LLAvatarActions::teleport_request_callback(const LLSD& notification, const
LLAgentUI::buildFullname(name);
msg->addStringFast(_PREHASH_FromAgentName, name);
msg->addStringFast(_PREHASH_Message, response["message"]);
// [RLVa:KB] - Checked: RLVa-2.0.0
msg->addStringFast(_PREHASH_Message, strMessage);
// [/RLVa:KB]
// msg->addStringFast(_PREHASH_Message, response["message"]);
msg->addU32Fast(_PREHASH_ParentEstateID, 0);
msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
@ -601,14 +617,17 @@ void LLAvatarActions::teleportRequest(const LLUUID& id)
LLSD notification;
notification["uuid"] = id;
LLAvatarName av_name;
if (!LLAvatarNameCache::get(id, &av_name))
{
// unlikely ... they just picked this name from somewhere...
LLAvatarNameCache::get(id, boost::bind(&LLAvatarActions::teleportRequest, id));
return; // reinvoke this when the name resolves
}
notification["NAME"] = av_name.getCompleteName();
// [RLVa:KB] - Checked: RLVa-1.5.0
notification["NAME"] = LLSLURL("agent", id, (RlvActions::canShowName(RlvActions::SNC_TELEPORTREQUEST, id)) ? "completename" : "rlvanonym").getSLURLString();
// [/RLVa:KB]
// LLAvatarName av_name;
// if (!LLAvatarNameCache::get(id, &av_name))
// {
// // unlikely ... they just picked this name from somewhere...
// LLAvatarNameCache::get(id, boost::bind(&LLAvatarActions::teleportRequest, id));
// return; // reinvoke this when the name resolves
// }
// notification["NAME"] = av_name.getCompleteName();
LLSD payload;

View File

@ -49,8 +49,8 @@
#include "lltooldraganddrop.h"
// [RLVa:KB] - Checked: 2010-06-04 (RLVa-1.2.2a)
#include "rlvhandler.h"
#include "rlvactions.h"
// [/RLVa:KB]
static LLDefaultChildRegistry::Register<LLAvatarList> r("avatar_list");
// Last interaction time update period.
@ -186,7 +186,7 @@ LLAvatarList::LLAvatarList(const Params& p)
, mShowSpeakingIndicator(p.show_speaking_indicator)
, mShowPermissions(p.show_permissions_granted)
, mShowCompleteName(false)
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
, mRlvCheckShowNames(false)
// [/RLVa:KB]
, mShowVoiceVolume(p.show_voice_volume)
@ -400,7 +400,7 @@ void LLAvatarList::refresh()
// <FS:Ansariel> FIRE-12750: Name filter not working correctly
//if (!have_filter || findInsensitive(getAvatarName(av_name), 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))
// </FS:Ansariel>
{
if (nadded >= ADD_LIMIT)
@ -456,7 +456,7 @@ void LLAvatarList::refresh()
have_names &= LLAvatarNameCache::get(buddy_id, &av_name);
// <FS:Ansariel> FIRE-12750: Name filter not working correctly
//if (!findInsensitive(getAvatarName(av_name), mNameFilter))
if (!findInsensitive(getNameForDisplay(av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
if (!findInsensitive(getNameForDisplay(buddy_id, av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames), mNameFilter))
// </FS:Ansariel>
{
removeItemByUUID(buddy_id);
@ -533,7 +533,7 @@ bool LLAvatarList::filterHasMatches()
// <FS:Ansariel> FIRE-12750: Name filter not working correctly
//if (have_name && !findInsensitive(getAvatarName(av_name), 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))
// </FS:Ansariel>
{
continue;
@ -589,7 +589,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is
{
LLAvatarListItem* item = new LLAvatarListItem();
item->setShowCompleteName(mShowCompleteName);
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
item->setRlvCheckShowNames(mRlvCheckShowNames);
// [/RLVa:KB]
@ -618,7 +618,7 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
// if ( mContextMenu && !isAvalineItemSelected())
// [RLVa:KB] - Checked: 2010-06-04 (RLVa-1.2.2a) | Modified: RLVa-1.2.0d
if ( (mContextMenu && !isAvalineItemSelected()) && ((!mRlvCheckShowNames) || (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))) )
if ( (mContextMenu && !isAvalineItemSelected()) && ((!mRlvCheckShowNames) || (!RlvActions::hasBehaviour(RLV_BHVR_SHOWNAMES))) )
// [/RLVa:KB]
{
uuid_vec_t selected_uuids;
@ -743,27 +743,27 @@ void LLAvatarList::onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
{
// mItemDoubleClickSignal(ctrl, x, y, mask);
// [RLVa:KB] - Checked: 2010-06-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
if ( (!mRlvCheckShowNames) || (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) )
if ( (!mRlvCheckShowNames) || (!RlvActions::hasBehaviour(RLV_BHVR_SHOWNAMES)) )
mItemDoubleClickSignal(ctrl, x, y, mask);
// [/RLVa:KB]
}
// <FS:Ansariel> 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) && (gRlvHandler.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) );
}
}
// </FS:Ansariel>

View File

@ -103,7 +103,7 @@ public:
// Return true if filter has at least one match.
bool filterHasMatches();
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
void setRlvCheckShowNames(bool fRlvCheckShowNames) { mRlvCheckShowNames = fRlvCheckShowNames; }
// We need this to be public since we call it from RlvUIEnabler::onToggleShowNames()
void updateAvatarNames();
@ -114,7 +114,7 @@ public:
// [/FS:CR]
// <FS:Ansariel> 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);
@ -155,7 +155,7 @@ private:
bool mShowSpeakingIndicator;
bool mShowPermissions;
bool mShowCompleteName;
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - RLVa-1.2.0
bool mRlvCheckShowNames;
// [/RLVa:KB]
bool mShowDisplayName;

View File

@ -42,8 +42,9 @@
#include "llavatariconctrl.h"
#include "lloutputmonitorctrl.h"
#include "lltooldraganddrop.h"
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a)
#include "rlvhandler.h"
// [RLVa:KB] - Checked: RLVa-2.0.1
#include "rlvactions.h"
#include "rlvcommon.h"
// [/RLVa:KB]
#include <time.h>
#include "llnotificationsutil.h"
@ -87,7 +88,7 @@ LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
mOnlineStatus(E_UNKNOWN),
mShowInfoBtn(true),
mShowProfileBtn(true),
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
mRlvCheckShowNames(false),
// [/RLVa:KB]
mShowPermissions(false),
@ -234,9 +235,10 @@ void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask)
// <FS:AO>, removed on-hover visibility. Don't do this. instead flip info buttons on full-time in postbuild.
// mInfoBtn->setVisible(mShowInfoBtn);
// mProfileBtn->setVisible(mShowProfileBtn);
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
//mInfoBtn->setVisible( (mShowInfoBtn) && ((!mRlvCheckShowNames) || (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))) );
//mProfileBtn->setVisible( (mShowProfileBtn) && ((!mRlvCheckShowNames) || (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))) );
// [RLVa:KB] - Checked: RLVa-1.2.0
//bool fRlvCanShowName = (!mRlvCheckShowNames) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, mAvatarId));
//mInfoBtn->setVisible( (mShowInfoBtn) && (fRlvCanShowName) );
//mProfileBtn->setVisible( (mShowProfileBtn) && (fRlvCanShowName) );
// [/RLVa:KB]
mHovered = true;
@ -424,13 +426,13 @@ void LLAvatarListItem::setLastInteractionTime(U32 secs_since)
void LLAvatarListItem::setShowInfoBtn(bool show)
{
mShowInfoBtn = show;
mInfoBtn->setVisible( (mShowInfoBtn) && ((!mRlvCheckShowNames) || (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))) );
mInfoBtn->setVisible( (mShowInfoBtn) && ((!mRlvCheckShowNames) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, mAvatarId))) );
}
void LLAvatarListItem::setShowVoiceVolume(bool show)
{
mShowVoiceVolume = show;
mVoiceSlider->setVisible( (mShowVoiceVolume) && ((!mRlvCheckShowNames) || (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))) );
mVoiceSlider->setVisible( (mShowVoiceVolume) && ((!mRlvCheckShowNames) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, mAvatarId))) );
if (show)
{
updateVoiceLevelSlider();
@ -511,7 +513,7 @@ void LLAvatarListItem::onProfileBtnClick()
BOOL LLAvatarListItem::handleDoubleClick(S32 x, S32 y, MASK mask)
{
// if(mInfoBtn->getRect().pointInRect(x, y))
// [SL:KB] - Checked: 2010-10-31 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
// [RVLa:KB] - Checked: RLVa-1.2.2
if ( (mInfoBtn->getVisible()) && (mInfoBtn->getEnabled()) && (mInfoBtn->getRect().pointInRect(x, y)) )
// [/SL:KB]
{
@ -519,7 +521,7 @@ BOOL LLAvatarListItem::handleDoubleClick(S32 x, S32 y, MASK mask)
return TRUE;
}
// if(mProfileBtn->getRect().pointInRect(x, y))
// [SL:KB] - Checked: 2010-10-31 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
// [RLVa:KB] - Checked: RLVa-1.2.2
if ( (mProfileBtn->getVisible()) && (mProfileBtn->getEnabled()) && (mProfileBtn->getRect().pointInRect(x, y)) )
// [/SL:KB]
{
@ -599,22 +601,22 @@ void LLAvatarListItem::onAvatarNameCache(const LLAvatarName& av_name)
//}
//setAvatarName(name_string);
//setAvatarToolTip(av_name.getUserName());
// [RLVa:KB] - Checked: 2010-10-31 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
// [RLVa:KB] - Checked: RLVa-1.2.2
// <FS:Ansa> Centralized in LLAvatarList::getNameForDisplay!
bool fRlvFilter = (mRlvCheckShowNames) && (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
bool fRlvCanShowName = (!mRlvCheckShowNames) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, mAvatarId));
//if (mShowDisplayName && !mShowUsername)
// setAvatarName( (!fRlvFilter) ? av_name.getDisplayName() : RlvStrings::getAnonym(av_name) );
// setAvatarName( (fRlvCanShowName) ? av_name.getDisplayName() : RlvStrings::getAnonym(av_name) );
//else if (!mShowDisplayName && mShowUsername)
// setAvatarName( (!fRlvFilter) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
// setAvatarName( (fRlvCanShowName) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
//else
// setAvatarName( (!fRlvFilter) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name) );
setAvatarName(LLAvatarList::getNameForDisplay(av_name, mShowDisplayName, mShowUsername, mRlvCheckShowNames));
// setAvatarName( (fRlvCanShowName) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name) );
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
setAvatarToolTip( (!fRlvFilter) ? av_name.getUserName() : RlvStrings::getAnonym(av_name) );
// 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(!fRlvFilter);
mAvatarIcon->setDrawTooltip(fRlvCanShowName);
// [/RLVa:KB]
//KC - store the username for use in sorting

View File

@ -117,7 +117,7 @@ public:
void showLastInteractionTime(bool show);
void setAvatarIconVisible(bool visible);
void setShowCompleteName(bool show) { mShowCompleteName = show;};
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
void setRlvCheckShowNames(bool fRlvCheckShowNames);
void updateRlvRestrictions();
// [/RLVa:KB]
@ -253,7 +253,7 @@ private:
bool mShowInfoBtn;
bool mShowVoiceVolume;
bool mShowProfileBtn;
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
bool mRlvCheckShowNames;
// [/RLVa:KB]
std::string mUserName; //KC - username cache used for sorting

View File

@ -661,10 +661,11 @@ protected:
void showInfoCtrl()
{
const bool isVisible = !mAvatarID.isNull() && !mFrom.empty() && CHAT_SOURCE_SYSTEM != mSourceType;
// const bool isVisible = !mAvatarID.isNull() && !mFrom.empty() && CHAT_SOURCE_SYSTEM != mSourceType;
// [RLVa:KB] - Checked: 2010-04-22 (RLVa-1.2.2a) | Added: RLVa-1.2.0f
if (isVisible && mShowInfoCtrl)
const bool isVisible = mShowInfoCtrl && !mAvatarID.isNull() && !mFrom.empty() && CHAT_SOURCE_SYSTEM != mSourceType;
// [/RLVa:KB]
if (isVisible)
{
const LLRect sticky_rect = mUserNameTextBox->getRect();
S32 icon_x = llmin(sticky_rect.mLeft + mUserNameTextBox->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3);

View File

@ -324,10 +324,16 @@ void LLDrawPoolTerrain::renderFullShader()
// Hack! Get the region that this draw pool is rendering from!
LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion();
LLVLComposition *compp = regionp->getComposition();
LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
LLViewerTexture *detail_texture0p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[0] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture1p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[1] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture2p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[2] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture3p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[3] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
// [/SL:KB]
// LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
// LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
// LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
// LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
LLVector3d region_origin_global = gAgent.getRegion()->getOriginGlobal();
F32 offset_x = (F32)fmod(region_origin_global.mdV[VX], 1.0/(F64)sDetailScale)*sDetailScale;
@ -475,10 +481,16 @@ void LLDrawPoolTerrain::renderFull4TU()
// Hack! Get the region that this draw pool is rendering from!
LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion();
LLVLComposition *compp = regionp->getComposition();
LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
LLViewerTexture *detail_texture0p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[0] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture1p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[1] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture2p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[2] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture3p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[3] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
// [/SL:KB]
// LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
// LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
// LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
// LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
LLVector3d region_origin_global = gAgent.getRegion()->getOriginGlobal();
F32 offset_x = (F32)fmod(region_origin_global.mdV[VX], 1.0/(F64)sDetailScale)*sDetailScale;
@ -677,10 +689,16 @@ void LLDrawPoolTerrain::renderFull2TU()
// Hack! Get the region that this draw pool is rendering from!
LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion();
LLVLComposition *compp = regionp->getComposition();
LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
LLViewerTexture *detail_texture0p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[0] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture1p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[1] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture2p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[2] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
LLViewerTexture *detail_texture3p = (LLPipeline::sRenderTextures) ? compp->mDetailTextures[3] : LLViewerFetchedTexture::sDefaultDiffuseImagep;
// [/SL:KB]
// LLViewerTexture *detail_texture0p = compp->mDetailTextures[0];
// LLViewerTexture *detail_texture1p = compp->mDetailTextures[1];
// LLViewerTexture *detail_texture2p = compp->mDetailTextures[2];
// LLViewerTexture *detail_texture3p = compp->mDetailTextures[3];
LLVector3d region_origin_global = gAgent.getRegion()->getOriginGlobal();
F32 offset_x = (F32)fmod(region_origin_global.mdV[VX], 1.0/(F64)sDetailScale)*sDetailScale;

View File

@ -98,7 +98,13 @@ void LLDrawPoolTree::render(S32 pass)
LLGLState test(GL_ALPHA_TEST, LLGLSLShader::sNoFixedFunction ? 0 : 1);
LLOverrideFaceColor color(this, 1.f, 1.f, 1.f, 1.f);
gGL.getTexUnit(sDiffTex)->bind(mTexturep);
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
if( (LLPipeline::sRenderTextures) )
gGL.getTexUnit(sDiffTex)->bind( mTexturep );
else
gGL.getTexUnit(sDiffTex)->bind( LLViewerFetchedTexture::sDefaultDiffuseImagep );
// [/SL:KB]
// gGL.getTexUnit(sDiffTex)->bind(mTexturep);
for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
iter != mDrawFace.end(); iter++)

View File

@ -53,6 +53,9 @@
#include "llviewershadermgr.h"
#include "llviewertexture.h"
#include "llvoavatar.h"
// [RLVa:KB] - Checked: RLVa-2.0.0
#include "rlvhandler.h"
// [/RLVa:KB]
#if LL_LINUX
// Work-around spurious used before init warning on Vector4a
@ -166,6 +169,10 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
mBoundingSphereRadius = 0.0f ;
mHasMedia = FALSE ;
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
mShowDiffTexture = true;
// [/SL:KB]
}
void LLFace::destroy()
@ -282,6 +289,14 @@ void LLFace::setTexture(U32 ch, LLViewerTexture* tex)
return ;
}
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
if ( (LLRender::DIFFUSE_MAP == ch) && (!mShowDiffTexture) )
{
mOrigDiffTexture = tex;
return;
}
// [/SL:KB]
if(mTexture[ch].notNull())
{
mTexture[ch]->removeFace(ch, this) ;
@ -2698,9 +2713,60 @@ LLViewerTexture* LLFace::getTexture(U32 ch) const
{
llassert(ch < LLRender::NUM_TEXTURE_CHANNELS);
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
// Check whether the diffuse texture needs to be obscured or restored
if (mShowDiffTexture != LLPipeline::sRenderTextures)
setDefaultTexture(LLRender::DIFFUSE_MAP, !LLPipeline::sRenderTextures);
// [/SL:KB]
return mTexture[ch] ;
}
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
void LLFace::setDefaultTexture(U32 nChannel, bool fShowDefault) const
{
bool fUpdated = false;
if ( (LLRender::DIFFUSE_MAP == nChannel) && (mVObjp) && (!mVObjp->isDead()) && ((LL_PCODE_VOLUME == mVObjp->getPCode()) || (LLViewerObject::LL_VO_PART_GROUP == mVObjp->getPCode())) )
{
if ( ((mShowDiffTexture) && (fShowDefault)) ||
((!mShowDiffTexture) && (fShowDefault) && (mOrigDiffTexture.notNull()) && (mTexture[nChannel]) && (mTexture[nChannel]->getID() != LLViewerFetchedTexture::sDefaultDiffuseImagep->getID())) )
{
if (mOrigDiffTexture.notNull())
mShowDiffTexture = true; // Swap out the default texture
else
mOrigDiffTexture = mTexture[nChannel]; // Cache the original texture
if ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SETCAM_TEXTURES)) || (!mVObjp->isAttachment()) )
{
if (LL_PCODE_VOLUME == mVObjp->getPCode())
const_cast<LLFace*>(this)->switchTexture(nChannel, LLViewerFetchedTexture::sDefaultDiffuseImagep);
else
const_cast<LLFace*>(this)->setTexture(nChannel, LLViewerFetchedTexture::sDefaultDiffuseImagep);
}
mShowDiffTexture = false; fUpdated = true;
}
else if ( (!mShowDiffTexture) && (!fShowDefault) && (mOrigDiffTexture.notNull()) )
{
mShowDiffTexture = true;
if (LL_PCODE_VOLUME == mVObjp->getPCode())
const_cast<LLFace*>(this)->switchTexture(nChannel, mOrigDiffTexture);
else
const_cast<LLFace*>(this)->setTexture(nChannel, mOrigDiffTexture);
mOrigDiffTexture = nullptr; fUpdated = true;
}
if ((fUpdated) && (mDrawablep))
{
gPipeline.markTextured(mDrawablep);
const_cast<LLDrawable*>(mDrawablep.get())->updateTexture();
}
}
// Always flip the flag even if we didn't obscure so we don't keep wasting cycles with negative checks
mShowDiffTexture = !fShowDefault;
}
// [/SL:KB]
void LLFace::setVertexBuffer(LLVertexBuffer* buffer)
{
mVertexBuffer = buffer;

View File

@ -220,6 +220,10 @@ public:
BOOL switchTexture() ;
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
void setDefaultTexture(U32 nChannel, bool fShowDefault) const;
// [/SL:KB]
//vertex buffer tracking
void setVertexBuffer(LLVertexBuffer* buffer);
void clearVertexBuffer(); //sets mVertexBuffer to NULL
@ -294,7 +298,11 @@ private:
F32 mBoundingSphereRadius ;
bool mHasMedia ;
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
mutable bool mShowDiffTexture;
mutable LLPointer<LLViewerTexture> mOrigDiffTexture;
// [/SL:KB]
protected:
static BOOL sSafeRenderSelect;

View File

@ -408,6 +408,7 @@ void LLFloaterAvatarPicker::onList()
RLV_ASSERT( (pTabs) && (pNearMePanel) );
if ( (pTabs) && (pNearMePanel) )
{
// TODO-RLVa: check this for RlvActions::canShowName()
bool fRlvEnable = !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES);
pTabs->enableTabButton(pTabs->getIndexForPanel(pNearMePanel), fRlvEnable);
if ( (!fRlvEnable) && (pTabs->getCurrentPanel() == pNearMePanel) )

View File

@ -104,7 +104,10 @@ void LLFloaterBuy::show(const LLSaleInfo& sale_info)
// Clean up the lists...
floater->reset();
floater->mSaleInfo = sale_info;
floater->mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
// [RLVa:KB] - Checked: RLVa-2.0.0
floater->mObjectSelection = LLSelectMgr::getInstance()->getSelection();
// [/RLVa:KB]
// floater->mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
LLSelectNode* node = selection->getFirstRootNode();
if (!node)

View File

@ -104,7 +104,10 @@ void LLFloaterBuyContents::show(const LLSaleInfo& sale_info)
if (list)
list->deleteAllItems();
floater->mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
// [RLVa:KB] - Checked: RLVa-2.0.0
floater->mObjectSelection = LLSelectMgr::getInstance()->getSelection();
// [/RLVa:KB]
// floater->mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
LLUUID owner_id;
std::string owner_name;

View File

@ -71,6 +71,7 @@
#include "llautoreplace.h"
// [RLVa:KB] - Checked: 2010-02-27 (RLVa-1.2.0b)
#include "rlvhandler.h"
#include "rlvactions.h"
// [/RLVa:KB]
S32 LLFloaterIMNearbyChat::sLastSpecialChatChannel = 0;
@ -876,7 +877,7 @@ void send_chat_from_viewer(std::string utf8_out_text, EChatType type, S32 channe
else
{
// Don't allow chat on a non-public channel if sendchannel restricted (unless the channel is an exception)
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SENDCHANNEL)) && (!gRlvHandler.isException(RLV_BHVR_SENDCHANNEL, channel)) )
if (!RlvActions::canSendChannel(channel))
return;
// Don't allow chat on debug channel if @sendchat, @redirchat or @rediremote restricted (shows as public chat on viewers)

View File

@ -46,8 +46,9 @@
#include "llrootview.h"
#include "lllayoutstack.h"
// [RLVa:KB] - Checked: 2010-04-21 (RLVa-1.2.0f)
#include "rlvhandler.h"
// [RLVa:KB] - Checked: RLVa-2.0.0
#include "rlvactions.h"
#include "rlvcommon.h"
// [/RLVa:KB]
#include "fsconsoleutils.h"
@ -551,16 +552,16 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,
LLChat& tmp_chat = const_cast<LLChat&>(chat_msg);
// [RLVa:KB] - Checked: 2010-04-20 (RLVa-1.2.0f) | Modified: RLVa-1.2.0f
if (rlv_handler_t::isEnabled())
if (RlvActions::isRlvEnabled())
{
// NOTE-RLVa: we can only filter the *message* here since most everything else will already be part of "args" as well
LLChat& tmp_chat = const_cast<LLChat&>(chat_msg);
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) && (!tmp_chat.mRlvLocFiltered) && (CHAT_SOURCE_AGENT != tmp_chat.mSourceType) )
if ( (!RlvActions::canShowLocation()) && (!tmp_chat.mRlvLocFiltered) && (CHAT_SOURCE_AGENT != tmp_chat.mSourceType) )
{
RlvUtil::filterLocation(tmp_chat.mText);
tmp_chat.mRlvLocFiltered = TRUE;
}
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (!tmp_chat.mRlvNamesFiltered) && (CHAT_SOURCE_AGENT != tmp_chat.mSourceType) )
if ( (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) && (!tmp_chat.mRlvNamesFiltered) && (CHAT_SOURCE_AGENT != tmp_chat.mSourceType) )
{
RlvUtil::filterNames(tmp_chat.mText);
tmp_chat.mRlvNamesFiltered = TRUE;
@ -664,8 +665,8 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,
LLFirstUse::otherAvatarChatFirst();
// Add sender to the recent people list.
// [RLVa:KB] - Checked: 2012-03-15 (RLVa-1.4.6) | Added: RLVa-1.4.6
if (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
// [RLVa:KB] - Checked: RLVa-2.0.0
if ( (!RlvActions::isRlvEnabled()) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, chat_msg.mFromID)) )
LLRecentPeople::instance().add(chat_msg.mFromID);
// [/RLVa:KB]
// LLRecentPeople::instance().add(chat_msg.mFromID);
@ -784,8 +785,8 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,
LLUUID id;
id.generate();
chat["id"] = id;
// [RLVa:KB] - Checked: 2010-04-20 (RLVa-1.2.0f) | Added: RLVa-1.2.0f
if (rlv_handler_t::isEnabled())
// [RLVa:KB] - Checked: RLVa-1.2.0
if (RlvActions::isRlvEnabled())
chat["show_icon_tooltip"] = !chat_msg.mRlvNamesFiltered;
// [/RLVa:KB]
std::string r_color_name = "White";

View File

@ -42,9 +42,10 @@
#include "llviewercontrol.h"
#include "llviewerobject.h"
#include "lluictrlfactory.h"
// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1a)
#include "rlvhandler.h"
#include "llagent.h"
// [RLVa:KB] - Checked: RLVa-2.0.1
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvui.h"
// [/RLVa:KB]
//LLFloaterInspect* LLFloaterInspect::sInstance = NULL;
@ -105,11 +106,13 @@ void LLFloaterInspect::onOpen(const LLSD& key)
mObjectSelection = LLSelectMgr::getInstance()->getSelection();
refresh();
}
void LLFloaterInspect::onClickCreatorProfile()
// [RLVa:KB] - Checked: RLVa-2.0.1
const LLSelectNode* LLFloaterInspect::getSelectedNode() /*const*/
{
if(mObjectList->getAllSelected().size() == 0)
{
return;
return NULL;
}
LLScrollListItem* first_selected =mObjectList->getFirstSelected();
@ -124,41 +127,29 @@ void LLFloaterInspect::onClickCreatorProfile()
return (obj_id == node->getObject()->getID());
}
} func(first_selected->getUUID());
LLSelectNode* node = mObjectSelection->getFirstNode(&func);
return mObjectSelection->getFirstNode(&func);
}
return NULL;
}
void LLFloaterInspect::onClickCreatorProfile()
{
const LLSelectNode* node = getSelectedNode();
if(node)
{
// LLAvatarActions::showProfile(node->mPermissions->getCreator());
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.2a) | Modified: RLVa-1.0.0e
// Only anonymize the creator if they're also the owner or if they're a nearby avie
const LLUUID& idCreator = node->mPermissions->getCreator();
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) &&
((node->mPermissions->getOwner() == idCreator) || (RlvUtil::isNearbyAgent(idCreator))) )
if ( (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, idCreator)) && ((node->mPermissions->getOwner() == idCreator) || (RlvUtil::isNearbyAgent(idCreator))) )
{
return;
}
LLAvatarActions::showProfile(idCreator);
// [/RLVa:KB]
}
}
}
void LLFloaterInspect::onClickOwnerProfile()
{
if(mObjectList->getAllSelected().size() == 0) return;
LLScrollListItem* first_selected =mObjectList->getFirstSelected();
if (first_selected)
{
LLUUID selected_id = first_selected->getUUID();
struct f : public LLSelectedNodeFunctor
{
LLUUID obj_id;
f(const LLUUID& id) : obj_id(id) {}
virtual bool apply(LLSelectNode* node)
{
return (obj_id == node->getObject()->getID());
}
} func(selected_id);
LLSelectNode* node = mObjectSelection->getFirstNode(&func);
const LLSelectNode* node = getSelectedNode();
if(node)
{
if(node->mPermissions->isGroupOwned())
@ -169,30 +160,108 @@ void LLFloaterInspect::onClickOwnerProfile()
else
{
const LLUUID& owner_id = node->mPermissions->getOwner();
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.2a) | Modified: RLVa-1.0.0e
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
return;
// [/RLVa:KB]
if (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, owner_id))
return;
LLAvatarActions::showProfile(owner_id);
}
}
}
}
void LLFloaterInspect::onSelectObject()
{
if(LLFloaterInspect::getSelectedUUID() != LLUUID::null)
{
// getChildView("button owner")->setEnabled(true);
// getChildView("button creator")->setEnabled(true);
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.2a) | Modified: RLVa-1.0.0e
getChildView("button owner")->setEnabled(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
// TODO-RLVa: [RLVa-1.2.2] Is it worth checking the selected node just to selectively disable this button?
getChildView("button creator")->setEnabled(true);
// [/RLVa:KB]
if (!RlvActions::isRlvEnabled())
{
getChildView("button owner")->setEnabled(true);
getChildView("button creator")->setEnabled(true);
}
else
{
const LLSelectNode* node = getSelectedNode();
const LLUUID& idOwner = (node) ? node->mPermissions->getOwner() : LLUUID::null;
const LLUUID& idCreator = (node) ? node->mPermissions->getCreator() : LLUUID::null;
// See LLFloaterInspect::onClickCreatorProfile()
getChildView("button owner")->setEnabled( (RlvActions::canShowName(RlvActions::SNC_DEFAULT, idOwner)) || ((node) && (node->mPermissions->isGroupOwned())) );
// See LLFloaterInspect::onClickOwnerProfile()
getChildView("button creator")->setEnabled( ((idOwner != idCreator) && (!RlvUtil::isNearbyAgent(idCreator))) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, idCreator)) );
}
}
}
// [/RLVa:KB]
//void LLFloaterInspect::onClickCreatorProfile()
//{
// if(mObjectList->getAllSelected().size() == 0)
// {
// return;
// }
// LLScrollListItem* first_selected =mObjectList->getFirstSelected();
//
// if (first_selected)
// {
// struct f : public LLSelectedNodeFunctor
// {
// LLUUID obj_id;
// f(const LLUUID& id) : obj_id(id) {}
// virtual bool apply(LLSelectNode* node)
// {
// return (obj_id == node->getObject()->getID());
// }
// } func(first_selected->getUUID());
// LLSelectNode* node = mObjectSelection->getFirstNode(&func);
// if(node)
// {
// LLAvatarActions::showProfile(node->mPermissions->getCreator());
// }
// }
//}
//void LLFloaterInspect::onClickOwnerProfile()
//{
// if(mObjectList->getAllSelected().size() == 0) return;
// LLScrollListItem* first_selected =mObjectList->getFirstSelected();
//
// if (first_selected)
// {
// LLUUID selected_id = first_selected->getUUID();
// struct f : public LLSelectedNodeFunctor
// {
// LLUUID obj_id;
// f(const LLUUID& id) : obj_id(id) {}
// virtual bool apply(LLSelectNode* node)
// {
// return (obj_id == node->getObject()->getID());
// }
// } func(selected_id);
// LLSelectNode* node = mObjectSelection->getFirstNode(&func);
// if(node)
// {
// if(node->mPermissions->isGroupOwned())
// {
// const LLUUID& idGroup = node->mPermissions->getGroup();
// LLGroupActions::show(idGroup);
// }
// else
// {
// const LLUUID& owner_id = node->mPermissions->getOwner();
// LLAvatarActions::showProfile(owner_id);
// }
//
// }
// }
//}
//void LLFloaterInspect::onSelectObject()
//{
// if(LLFloaterInspect::getSelectedUUID() != LLUUID::null)
// {
// getChildView("button owner")->setEnabled(true);
// getChildView("button creator")->setEnabled(true);
// }
//}
LLUUID LLFloaterInspect::getSelectedUUID()
{
@ -278,12 +347,11 @@ void LLFloaterInspect::refresh()
// actual name and set a placeholder.
if (LLAvatarNameCache::get(idOwner, &av_name))
{
// owner_name = av_name.getCompleteName();
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
bool fRlvFilterOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idOwner != gAgent.getID()) &&
(!obj->mPermissions->isGroupOwned());
owner_name = (!fRlvFilterOwner) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
// [RLVa:KB] - Checked: RLVa-2.0.1
bool fRlvCanShowName = (RlvActions::canShowName(RlvActions::SNC_DEFAULT, idOwner)) || (obj->mPermissions->isGroupOwned());
owner_name = (fRlvCanShowName) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
// [/RLVa:KB]
// owner_name = av_name.getCompleteName();
}
else
{
@ -298,14 +366,12 @@ void LLFloaterInspect::refresh()
if (LLAvatarNameCache::get(idCreator, &av_name))
{
// creator_name = av_name.getCompleteName();
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
// [RLVa:KB] - Checked: RLVa-2.0.1
const LLUUID& idCreator = obj->mPermissions->getCreator();
LLAvatarNameCache::get(idCreator, &av_name);
bool fRlvFilterCreator = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idCreator != gAgent.getID()) &&
( (obj->mPermissions->getOwner() == idCreator) || (RlvUtil::isNearbyAgent(idCreator)) );
creator_name = (!fRlvFilterCreator) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
bool fRlvCanShowName = (RlvActions::canShowName(RlvActions::SNC_DEFAULT, idCreator)) || ( (obj->mPermissions->getOwner() != idCreator) && (!RlvUtil::isNearbyAgent(idCreator)) );
creator_name = (fRlvCanShowName) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
// [/RLVa:KB]
// creator_name = av_name.getCompleteName();
}
else
{
@ -316,7 +382,7 @@ void LLFloaterInspect::refresh()
}
mCreatorNameCacheConnection = LLAvatarNameCache::get(idCreator, boost::bind(&LLFloaterInspect::onGetCreatorNameCallback, this));
}
row["id"] = obj->getObject()->getID();
row["columns"][0]["column"] = "object_name";
row["columns"][0]["type"] = "text";

View File

@ -36,6 +36,9 @@
class LLObjectSelection;
class LLScrollListCtrl;
class LLUICtrl;
// [RLVa:KB] - Checked: RLVa-2.0.1
class LLSelectNode;
// [/RLVa:KB]
class LLFloaterInspect : public LLFloater
{
@ -61,6 +64,10 @@ protected:
void setDirty() { mDirty = TRUE; }
bool mDirty;
// [RLVa:KB] - Checked: RLVa-2.0.1
const LLSelectNode* getSelectedNode() /*const*/;
// [/RLVa:KB]
private:
void onGetOwnerNameCallback();
void onGetCreatorNameCallback();

View File

@ -118,6 +118,10 @@
#include "llteleporthistorystorage.h"
#include "llproxy.h"
#include "llweb.h"
// [RLVa:KB] - Checked: 2010-03-18 (RLVa-1.2.0a)
#include "rlvactions.h"
#include "rlvhandler.h"
// [/RLVa:KB]
#include "lllogininstance.h" // to check if logged in yet
#include "llsdserialize.h"
@ -129,6 +133,7 @@
// Firestorm Includes
#include "exogroupmutelist.h"
#include "fsavatarrenderpersistence.h"
#include "fsdroptarget.h"
#include "fsfloaterimcontainer.h"
#include "growlmanager.h"
@ -147,8 +152,6 @@
#include "llwaterparammanager.h"
#include "llwldaycycle.h"
#include "llwlparammanager.h"
#include "rlvactions.h"
#include "rlvhandler.h"
#include "NACLantispam.h"
#include "../llcrashlogger/llcrashlogger.h"
@ -683,10 +686,10 @@ BOOL LLFloaterPreference::postBuild()
//getChild<LLComboBox>("ObjectIMOptions")->setCommitCallback(boost::bind(&LLFloaterPreference::onNotificationsChange, this,"ObjectIMOptions"));
// </FS:CR>
// ## Zi: Optional Edit Appearance Lighting
// <FS:Zi> Optional Edit Appearance Lighting
gSavedSettings.getControl("AppearanceCameraMovement")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAppearanceCameraChanged, this));
onAppearanceCameraChanged();
// ## Zi: Optional Edit Appearance Lighting
// </FS:Zi> Optional Edit Appearance Lighting
// if floater is opened before login set default localized do not disturb message
@ -739,11 +742,11 @@ BOOL LLFloaterPreference::postBuild()
#endif // OPENSIM // <FS:AW optional opensim support/>
// ## Zi: Pie menu
// <FS:Zi> Pie menu
gSavedSettings.getControl("OverridePieColors")->getSignal()->connect(boost::bind(&LLFloaterPreference::onPieColorsOverrideChanged, this));
// make sure pie color controls are enabled or greyed out properly
onPieColorsOverrideChanged();
// ## Zi: Pie menu
// </FS:Zi> Pie menu
// <FS:Ansariel> Show email address in preferences (FIRE-1071)
getChild<LLCheckBoxCtrl>("send_im_to_email")->setLabelArg("[EMAIL]", getString("LoginToChange"));
@ -757,8 +760,15 @@ BOOL LLFloaterPreference::postBuild()
mFilterEdit->setKeystrokeCallback(boost::bind(&LLFloaterPreference::onUpdateFilterTerm, this, false));
// </FS:ND>
// <FS:Ansariel> Update label for max. non imposters
// <FS:Ansariel> Update label for max. non imposters and max complexity
gSavedSettings.getControl("IndirectMaxNonImpostors")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::updateMaxNonImpostorsLabel, this, _2));
gSavedSettings.getControl("RenderAvatarMaxComplexity")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::updateMaxComplexityLabel, this, _2));
// <FS:Ansariel> Properly disable avatar tag setting
gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAvatarTagSettingsChanged, this));
gSavedSettings.getControl("FSNameTagShowLegacyUsernames")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAvatarTagSettingsChanged, this));
onAvatarTagSettingsChanged();
// </FS:Ansariel>
return TRUE;
}
@ -2159,8 +2169,14 @@ void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
LLSliderCtrl* terrain_detail = getChild<LLSliderCtrl>("TerrainDetail"); // can be linked with control var
LLTextBox* terrain_text = getChild<LLTextBox>("TerrainDetailText");
ctrl_shader_enable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));
// ctrl_shader_enable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));
// [RLVa:KB] - Checked: 2010-03-18 (RLVa-1.2.0a) | Modified: RLVa-0.2.0a
// "Basic Shaders" can't be disabled - but can be enabled - under @setenv=n
bool fCtrlShaderEnable = LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable");
ctrl_shader_enable->setEnabled(
fCtrlShaderEnable && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV)) || (!gSavedSettings.getBOOL("VertexShaderEnable"))) );
// [/RLVa:KB]
BOOL shaders = ctrl_shader_enable->get();
if (shaders)
{
@ -2181,7 +2197,13 @@ void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
// *HACK just checks to see if we can use shaders...
// maybe some cards that use shaders, but don't support windlight
ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
// ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
// [RLVa:KB] - Checked: 2010-03-18 (RLVa-1.2.0a) | Modified: RLVa-0.2.0a
// "Atmospheric Shaders" can't be disabled - but can be enabled - under @setenv=n
bool fCtrlWindLightEnable = fCtrlShaderEnable && shaders;
ctrl_wind_light->setEnabled(
fCtrlWindLightEnable && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV)) || (!gSavedSettings.getBOOL("WindLightUseAtmosShaders"))) );
// [/RLVa:KB]
sky->setEnabled(ctrl_wind_light->get() && shaders);
sky_text->setEnabled(ctrl_wind_light->get() && shaders);
@ -2289,7 +2311,10 @@ void LLAvatarComplexityControls::setIndirectMaxArc()
else
{
// This is the inverse of the calculation in updateMaxComplexity
indirect_max_arc = (U32)((log(max_arc) - MIN_ARC_LOG) / ARC_LIMIT_MAP_SCALE) + MIN_INDIRECT_ARC_LIMIT;
// <FS:Ansariel> Fix math rounding error
//indirect_max_arc = (U32)((log(max_arc) - MIN_ARC_LOG) / ARC_LIMIT_MAP_SCALE) + MIN_INDIRECT_ARC_LIMIT;
indirect_max_arc = (U32)ll_round(((log(F32(max_arc)) - MIN_ARC_LOG) / ARC_LIMIT_MAP_SCALE)) + MIN_INDIRECT_ARC_LIMIT;
// </FS:Ansariel>
}
gSavedSettings.setU32("IndirectMaxComplexity", indirect_max_arc);
}
@ -3031,6 +3056,13 @@ void LLFloaterPreference::updateMaxNonImpostorsLabel(const LLSD& newvalue)
}
setMaxNonImpostorsText(value, getChild<LLTextBox>("IndirectMaxNonImpostorsText"));
}
void LLFloaterPreference::updateMaxComplexityLabel(const LLSD& newvalue)
{
U32 value = newvalue.asInteger();
LLAvatarComplexityControls::setText(value, getChild<LLTextBox>("IndirectMaxComplexityText"));
}
// </FS:Ansariel>
void LLFloaterPreferenceGraphicsAdvanced::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box)
@ -3108,7 +3140,10 @@ void LLAvatarComplexityControls::updateMax(LLSliderCtrl* slider, LLTextBox* valu
{
// if this is changed, the inverse calculation in setIndirectMaxArc
// must be changed to match
max_arc = (U32)exp(MIN_ARC_LOG + (ARC_LIMIT_MAP_SCALE * (indirect_value - MIN_INDIRECT_ARC_LIMIT)));
// <FS:Ansariel> Fix math rounding error
//max_arc = (U32)exp(MIN_ARC_LOG + (ARC_LIMIT_MAP_SCALE * (indirect_value - MIN_INDIRECT_ARC_LIMIT)));
max_arc = (U32)ll_round(exp(MIN_ARC_LOG + (ARC_LIMIT_MAP_SCALE * (indirect_value - MIN_INDIRECT_ARC_LIMIT))));
// </FS:Ansariel>
}
gSavedSettings.setU32("RenderAvatarMaxComplexity", (U32)max_arc);
@ -3123,7 +3158,12 @@ void LLAvatarComplexityControls::setText(U32 value, LLTextBox* text_box)
}
else
{
text_box->setText(llformat("%d", value));
// <FS:Ansariel> Proper number formatting with delimiter
//text_box->setText(llformat("%d", value));
std::string output_string;
LLLocale locale(LLLocale::USER_LOCALE);
LLResMgr::getInstance()->getIntegerString(output_string, value);
text_box->setText(output_string);
}
}
@ -3354,6 +3394,18 @@ void LLFloaterPreference::saveGraphicsPreset(const std::string& preset)
mSavedGraphicsPreset = preset;
}
// <FS:Ansariel> Properly disable avatar tag setting
void LLFloaterPreference::onAvatarTagSettingsChanged()
{
bool usernames_enabled = gSavedSettings.getBOOL("NameTagShowUsernames");
bool legacy_enabled = gSavedSettings.getBOOL("FSNameTagShowLegacyUsernames");
childSetEnabled("FSshow_legacyun", usernames_enabled);
childSetEnabled("legacy_trim_check", usernames_enabled && legacy_enabled);
}
// </FS:Ansariel>
//------------------------------Updater---------------------------------------
//<FS:HG> FIRE-6340, FIRE-6567 - Setting Bandwidth issues
@ -4820,6 +4872,9 @@ void FSPanelPreferenceBackup::onClickBackupSettings()
std::string backup_per_account_name = gDirUtilp->getExpandedFilename(LL_PATH_NONE, backup_per_account_folder,
LLAppViewer::instance()->getSettingsFilename("Default", "PerAccount"));
// Make sure to persist settings to file before we copy them
FSAvatarRenderPersistence::instance().saveAvatarRenderSettings();
LL_INFOS("SettingsBackup") << "copying per account settings" << LL_ENDL;
// create per-user folder if it doesn't exist yet
LLFile::mkdir(backup_per_account_folder.c_str());
@ -5146,6 +5201,7 @@ void FSPanelPreferenceBackup:: doRestoreSettings(const LLSD& notification, const
exoGroupMuteList::instance().loadMuteList();
}
#endif
FSAvatarRenderPersistence::instance().loadAvatarRenderSettings();
LLPanelMainInventory::sSaveFilters = false;
}

View File

@ -161,6 +161,9 @@ protected:
void loadFontPresetsFromDir(const std::string& dir, LLComboBox* font_selection_combo);
//</FS:Kadah>
// <FS:Ansariel> Properly disable avatar tag setting
void onAvatarTagSettingsChanged();
public:
// This function squirrels away the current values of the controls so that
// cancel() can restore them.
@ -232,6 +235,7 @@ public:
void updateMaxNonImpostors();
void setMaxNonImpostorsText(U32 value, LLTextBox* text_box);
void updateMaxNonImpostorsLabel(const LLSD& newvalue);
void updateMaxComplexityLabel(const LLSD& newvalue);
// </FS:Ansariel>
void refreshUI();

View File

@ -59,8 +59,9 @@
#include "lluictrlfactory.h"
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b)
#include "rlvhandler.h"
// [RLVa:KB] - Checked: RLVa-2.0.1
#include "rlvactions.h"
#include "rlvcommon.h"
// [/RLVa:KB]
#include "llviewernetwork.h" // <FS:CR> For OpenSim export perms
#include "llexperiencecache.h"
@ -306,11 +307,10 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
getChildView("BtnCreator")->setEnabled(TRUE);
getChildView("LabelCreatorTitle")->setEnabled(TRUE);
getChildView("LabelCreatorName")->setEnabled(TRUE);
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b) | Modified: RLVa-1.0.0e
// [RLVa:KB] - Checked: RLVa-2.0.1
// If the object creator matches the object owner we need to anonymize the creator field as well
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) &&
( ((perm.isOwned()) && (!perm.isGroupOwned()) && (perm.getOwner() == item->getCreatorUUID()) ) ||
(RlvUtil::isNearbyAgent(item->getCreatorUUID())) ) )
if ( (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, item->getCreatorUUID())) &&
( ((perm.isOwned()) && (!perm.isGroupOwned()) && (perm.getOwner() == item->getCreatorUUID()) ) || (RlvUtil::isNearbyAgent(item->getCreatorUUID())) ) )
{
childSetEnabled("BtnCreator", FALSE);
name = RlvStrings::getAnonym(name);
@ -331,6 +331,9 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
////////////////
if(perm.isOwned())
{
// [RLVa:KB] - Checked: RVLa-2.0.1
bool fRlvCanShowOwner = true;
// [/RLVa:KB]
std::string name;
if (perm.isGroupOwned())
{
@ -339,14 +342,18 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
else
{
gCacheName->getFullName(perm.getOwner(), name);
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b) | Modified: RLVa-1.0.0e
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
name = RlvStrings::getAnonym(name);
// [RLVa:KB] - Checked: RLVa-2.0.1
if (RlvActions::isRlvEnabled())
{
fRlvCanShowOwner = RlvActions::canShowName(RlvActions::SNC_DEFAULT, perm.getOwner());
if (!fRlvCanShowOwner)
name = RlvStrings::getAnonym(name);
}
// [/RLVa:KB]
}
// getChildView("BtnOwner")->setEnabled(TRUE);
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b) | Added: RLVa-1.0.0e
getChildView("BtnOwner")->setEnabled(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
// [RLVa:KB] - Checked: RLVa-2.0.1
getChildView("BtnOwner")->setEnabled(fRlvCanShowOwner);
// [/RLVa:KB]
getChildView("LabelOwnerTitle")->setEnabled(TRUE);
getChildView("LabelOwnerName")->setEnabled(TRUE);
@ -616,12 +623,12 @@ void LLFloaterProperties::onClickCreator()
if(!item) return;
if(!item->getCreatorUUID().isNull())
{
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b) | Added: RLVa-1.2.1b
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
// [RLVa:KB] - Checked: RLVa-1.2.1
const LLUUID& idCreator = item->getCreatorUUID();
if ( (RlvActions::isRlvEnabled()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, idCreator)) )
{
const LLPermissions& perm = item->getPermissions();
if ( ((perm.isOwned()) && (!perm.isGroupOwned()) && (perm.getOwner() == item->getCreatorUUID()) ) ||
(RlvUtil::isNearbyAgent(item->getCreatorUUID())) )
if ( ((perm.isOwned()) && (!perm.isGroupOwned()) && (perm.getOwner() == idCreator) ) || (RlvUtil::isNearbyAgent(idCreator)) )
{
return;
}
@ -642,8 +649,8 @@ void LLFloaterProperties::onClickOwner()
}
else
{
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b) | Modified: RLVa-1.0.0e
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
// [RLVa:KB] - Checked: RLVa-1.0.0
if ( (RlvActions::isRlvEnabled()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, item->getPermissions().getOwner())) )
return;
// [/RLVa:KB]
LLAvatarActions::showProfile(item->getPermissions().getOwner());

View File

@ -61,6 +61,10 @@
#include "chatbar_as_cmdline.h" // <ND/> For FIRE-1624
// [RLVa:KB] - Checked: RLVa-2.0.0
#include "rlvactions.h"
// [/RLVa:KB]
// Longest time, in seconds, to wait for all animations to stop playing
const F32 MAX_WAIT_ANIM_SECS = 60.f;
@ -532,6 +536,11 @@ void LLGestureMgr::playGesture(LLMultiGesture* gesture)
{
if (!gesture) return;
// [RLVa:KB] - Checked: RLVa-2.0.0 | Handles: @sendgesture
if (!RlvActions::canPlayGestures())
return;
// [/RLVa:KB]
// Reset gesture to first step
gesture->mCurrentStep = 0;

View File

@ -46,9 +46,10 @@
#include "llrecentpeople.h"
#include "llviewerobjectlist.h"
#include "llvoavatarself.h"
// [RLVa:KB] - Checked: 2010-03-04 (RLVa-1.2.2a)
// [RLVa:KB] - Checked: RLVa-1.2.2
#include "llavatarnamecache.h"
#include "rlvhandler.h"
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvui.h"
// [/RLVa:KB]
#include "llworld.h" // <FS:CR> Aurora Sim
@ -326,9 +327,8 @@ void LLGiveInventory::logInventoryOffer(const LLUUID& to_agent, const LLUUID &im
{
gIMMgr->addSystemMessage(im_session_id, "inventory_item_offered", args);
}
// [RLVa:KB] - Checked: 2010-05-26 (RLVa-1.2.2a) | Modified: RLVa-1.2.0h
else if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (RlvUtil::isNearbyAgent(to_agent)) &&
(!RlvUIEnabler::hasOpenProfile(to_agent)) )
// [RLVa:KB] - Checked: RLVa-1.2.0
else if ( (RlvActions::isRlvEnabled()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, to_agent)) && (RlvUtil::isNearbyAgent(to_agent)) && (!RlvUIEnabler::hasOpenProfile(to_agent)) )
{
// Log to chat history if the user didn't drop on an IM session or a profile to avoid revealing the name of the recipient
std::string strMsgName = "inventory_item_offered-im"; LLSD args; LLAvatarName avName;
@ -462,10 +462,10 @@ void LLGiveInventory::commitGiveInventoryItem(const LLUUID& to_agent,
// add buddy to recent people list
// LLRecentPeople::instance().add(to_agent);
// [RLVa:KB] - Checked: 2010-04-21 (RLVa-1.2.2a) | Added: RLVa-1.2.0f
// [RLVa:KB] - Checked: RLVa-2.0.0
// Block the recent activity update if this was an in-world drop on an avatar (as opposed to a drop on an IM session or on a profile)
if ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) || (im_session_id.notNull()) || (!RlvUtil::isNearbyAgent(to_agent)) ||
(RlvUIEnabler::hasOpenProfile(to_agent)) )
if ( (!RlvActions::isRlvEnabled()) ||
(RlvActions::canShowName(RlvActions::SNC_DEFAULT, to_agent)) || (im_session_id.notNull()) || (!RlvUtil::isNearbyAgent(to_agent)) || (RlvUIEnabler::hasOpenProfile(to_agent)) )
{
LLRecentPeople::instance().add(to_agent);
}
@ -536,10 +536,10 @@ bool LLGiveInventory::commitGiveInventoryCategory(const LLUUID& to_agent,
// add buddy to recent people list
// LLRecentPeople::instance().add(to_agent);
// [RLVa:KB] - Checked: 2010-04-20 (RLVa-1.2.2a) | Added: RLVa-1.2.0f
// [RLVa:KB] - Checked: RLVa-2.0.0
// Block the recent activity update if this was an in-world drop on an avatar (as opposed to a drop on an IM session or on a profile)
if ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) || (im_session_id.notNull()) || (!RlvUtil::isNearbyAgent(to_agent)) ||
(RlvUIEnabler::hasOpenProfile(to_agent)) )
if ( (!RlvActions::isRlvEnabled()) ||
(RlvActions::canShowName(RlvActions::SNC_DEFAULT, to_agent)) || (im_session_id.notNull()) || (!RlvUtil::isNearbyAgent(to_agent)) || (RlvUIEnabler::hasOpenProfile(to_agent)) )
{
LLRecentPeople::instance().add(to_agent);
}

View File

@ -64,7 +64,9 @@
#include "llspatialpartition.h"
#include "llviewershadermgr.h"
// [RLVa:KB] - Checked: 2010-04-11 (RLVa-1.2.0e)
#include "rlvactions.h"
#include "rlvhandler.h"
#include "rlvhelper.h"
// [/RLVa:KB]
// Height of the yellow selection highlight posts for land
@ -167,13 +169,15 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
// [RLVa:KB] - Checked: 2010-04-11 (RLVa-1.2.0e) | Modified: RLVa-1.0.0g
if (gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH))
{
static RlvCachedBehaviourModifier<float> s_nFartouchDist(RLV_MODIFIER_FARTOUCHDIST);
// We'll allow drag selection under fartouch, but only within the fartouch range
// (just copy/paste the code above us to make that work, thank you Lindens!)
LLVector3 relative_av_pos = av_pos;
relative_av_pos -= LLViewerCamera::getInstance()->getOrigin();
F32 new_far = relative_av_pos * LLViewerCamera::getInstance()->getAtAxis() + 1.5f;
F32 new_near = relative_av_pos * LLViewerCamera::getInstance()->getAtAxis() - 1.5f;
F32 new_far = relative_av_pos * LLViewerCamera::getInstance()->getAtAxis() + s_nFartouchDist;
F32 new_near = relative_av_pos * LLViewerCamera::getInstance()->getAtAxis() - s_nFartouchDist;
new_near = llmax(new_near, 0.1f);
@ -182,7 +186,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
// Usurp these two
limit_select_distance = TRUE;
select_dist_squared = 1.5f * 1.5f;
select_dist_squared = s_nFartouchDist * s_nFartouchDist;
}
// [/RLVa:KB]
LLViewerCamera::getInstance()->setPerspective(FOR_SELECTION,
@ -269,7 +273,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
}
// [RLVa:KB] - Checked: 2010-11-29 (RLVa-1.3.0c) | Added: RLVa-1.3.0c
if ( (rlv_handler_t::isEnabled()) && (!gRlvHandler.canEdit(vobjp)) )
if ( (RlvActions::isRlvEnabled()) && (!RlvActions::canEdit(vobjp)) )
{
continue;
}

View File

@ -41,6 +41,12 @@
#include "llnotificationsutil.h"
#include "llstatusbar.h" // can_afford_transaction()
#include "groupchatlistener.h"
// [RLVa:KB] - Checked: 2011-03-28 (RLVa-1.3.0)
#include "llslurl.h"
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvhandler.h"
// [/RLVa:KB]
// Firestorm includes
#include "exogroupmutelist.h"
@ -51,10 +57,6 @@
#include "fsfloaterim.h"
#include "llpanelgroup.h"
#include "llresmgr.h"
#include "llslurl.h"
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvhandler.h"
//
// Globals
@ -235,7 +237,7 @@ void LLGroupActions::startCall(const LLUUID& group_id)
}
// [RLVa:KB] - Checked: 2013-05-09 (RLVa-1.4.9)
if ( (!RlvActions::canStartIM(group_id)) && (!RlvActions::hasOpenGroupSession(group_id)) )
if (!RlvActions::canStartIM(group_id))
{
make_ui_sound("UISndInvalidOp");
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTIM, LLSD().with("RECIPIENT", LLSLURL("group", group_id, "about").getSLURLString()));
@ -614,7 +616,7 @@ LLUUID LLGroupActions::startIM(const LLUUID& group_id)
if (group_id.isNull()) return LLUUID::null;
// [RLVa:KB] - Checked: 2013-05-09 (RLVa-1.4.9)
if ( (!RlvActions::canStartIM(group_id)) && (!RlvActions::hasOpenGroupSession(group_id)) )
if (!RlvActions::canStartIM(group_id))
{
make_ui_sound("UISndInvalidOp");
RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTIM, LLSD().with("RECIPIENT", LLSLURL("group", group_id, "about").getSLURLString()));
@ -834,7 +836,10 @@ void LLGroupActions::ejectFromGroup(const LLUUID& idGroup, const LLUUID& idAgent
LLSD payload;
payload["avatar_id"] = idAgent;
payload["group_id"] = idGroup;
std::string fullname = LLSLURL("agent", idAgent, "inspect").getSLURLString();
// <FS:Ansariel> Show complete name in eject dialog
//std::string fullname = LLSLURL("agent", idAgent, "inspect").getSLURLString();
std::string fullname = LLSLURL("agent", idAgent, "completename").getSLURLString();
// </FS:Ansariel>
args["AVATAR_NAME"] = fullname;
LLNotificationsUtil::add("EjectGroupMemberWarning",
args,

View File

@ -46,7 +46,8 @@
#include "llstatusbar.h"
#include "llmenugl.h"
#include "pipeline.h"
// [RLVa:KB] - Checked: 2010-03-27 (RLVa-1.4.0a)
// [RLVa:KB] - Checked: RLVa-1.4.0
#include "rlvactions.h"
#include "rlvhandler.h"
// [/RLVa:KB]
#include <boost/tokenizer.hpp>
@ -260,14 +261,14 @@ void LLHUDText::setString(const std::string &text_utf8)
// addLine(text_utf8, mColor);
// [RLVa:KB] - Checked: 2010-03-02 (RLVa-1.4.0a) | Modified: RLVa-1.0.0f
// NOTE: setString() is called for debug and map beacons as well
if (rlv_handler_t::isEnabled())
if (RlvActions::isRlvEnabled())
{
std::string text(text_utf8);
if (gRlvHandler.canShowHoverText(mSourceObject))
{
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
if (!RlvActions::canShowLocation())
RlvUtil::filterLocation(text);
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
if (!RlvActions::canShowName(RlvActions::SNC_DEFAULT))
RlvUtil::filterNames(text);
}
else

View File

@ -39,6 +39,7 @@
#include "llviewermediafocus.h"
#include "llviewerobjectlist.h" // to select the requested object
// [RLVa:KB] - Checked: 2010-02-27 (RLVa-1.2.0c)
#include "rlvactions.h"
#include "rlvhandler.h"
#include "lltoolpie.h"
// [/RLVa:KB]
@ -401,7 +402,7 @@ void LLInspectObject::updateSitLabel(LLSelectNode* nodep)
if (rlv_handler_t::isEnabled())
{
const LLPickInfo& pick = LLToolPie::getInstance()->getPick();
sit_btn->setEnabled( (pick.mObjectID.notNull()) && (gRlvHandler.canSit(pick.getObject(), pick.mObjectOffset)) );
sit_btn->setEnabled( (pick.mObjectID.notNull()) && (RlvActions::canSit(pick.getObject(), pick.mObjectOffset)) );
}
// [/RLVa:KB]
}
@ -501,12 +502,10 @@ void LLInspectObject::updateCreator(LLSelectNode* nodep)
LLUUID creator_id = nodep->mPermissions->getCreator();
// std::string creator_url =
// LLSLURL("agent", creator_id, "about").getSLURLString();
// [RLVa:KB] - Checked: 2010-11-02 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
// [RLVa:KB] - Checked: RLVa-1.2.2
// Only anonymize the creator if they're also the owner or if they're a nearby avie
bool fRlvHideCreator = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) &&
((nodep->mPermissions->getOwner() == creator_id) || (RlvUtil::isNearbyAgent(creator_id)));
std::string creator_url =
LLSLURL("agent", creator_id, (!fRlvHideCreator) ? "about" : "rlvanonym").getSLURLString();
bool fRlvHideCreator = (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, creator_id)) && ((nodep->mPermissions->getOwner() == creator_id) || (RlvUtil::isNearbyAgent(creator_id)));
const std::string creator_url = LLSLURL("agent", creator_id, (!fRlvHideCreator) ? "about" : "rlvanonym").getSLURLString();
// [/RLVa:KB]
args["[CREATOR]"] = creator_url;
@ -523,8 +522,8 @@ void LLInspectObject::updateCreator(LLSelectNode* nodep)
{
owner_id = nodep->mPermissions->getOwner();
// owner_url = LLSLURL("agent", owner_id, "about").getSLURLString();
// [RLVa:KB] - Checked: 2010-11-02 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
bool fRlvHideOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
// [RLVa:KB] - Checked: RLVa-1.2.2
bool fRlvHideOwner = (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, owner_id));
owner_url = LLSLURL("agent", owner_id, (!fRlvHideOwner) ? "about" : "rlvanonym").getSLURLString();
// [/RLVa:KB]
}

View File

@ -1051,17 +1051,22 @@ void LLInventoryFilter::setFilterWorn(BOOL worn)
// </FS>
// <FS:Ansariel> FIRE-19340: search inventory by transferable permission
void LLInventoryFilter::setFilterTransferable(BOOL transferable)
{
setModified();
if (transferable)
{
mFilterOps.mFilterTypes |= FILTERTYPE_TRANSFERABLE;
}
else
{
mFilterOps.mFilterTypes &= ~FILTERTYPE_TRANSFERABLE;
}
void LLInventoryFilter::setFilterTransferable(BOOL transferable)
{
BOOL current = (mFilterOps.mFilterTypes & FILTERTYPE_TRANSFERABLE) != 0;
if (current != transferable)
{
setModified();
if (transferable)
{
mFilterOps.mFilterTypes |= FILTERTYPE_TRANSFERABLE;
}
else
{
mFilterOps.mFilterTypes &= ~FILTERTYPE_TRANSFERABLE;
}
}
}
// </FS:Ansariel>

View File

@ -74,8 +74,9 @@
#include "llviewerwindow.h"
#include "llworld.h"
#include "llworldmapview.h" // shared draw code
// [RLVa:KB] - Checked: 2010-04-19 (RLVa-1.2.0f)
#include "rlvhandler.h"
// [RLVa:KB] - Checked: RLVa-2.0.1
#include "rlvactions.h"
#include "rlvcommon.h"
// [/RLVa:KB]
#include "llmutelist.h"
#include "lfsimfeaturehandler.h"
@ -677,7 +678,7 @@ void LLNetMap::draw()
// [RLVa:KB] - Checked: 2010-04-19 (RLVa-1.2.0f) | Modified: RLVa-1.2.0f | FS-Specific
LLWorldMapView::drawAvatar(
pos_map.mV[VX], pos_map.mV[VY],
((!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ? color : map_avatar_color.get()),
(RlvActions::canShowName(RlvActions::SNC_DEFAULT, uuid)) ? color : map_avatar_color.get(),
pos_map.mV[VZ], mDotRadius,
unknown_relative_z);
// [/RLVa:KB]
@ -995,26 +996,17 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, MASK mask )
// If the cursor is near an avatar on the minimap, a mini-inspector will be
// shown for the avatar, instead of the normal map tooltip.
// if (handleToolTipAgent(mClosestAgentToCursor))
// [RLVa:KB] - Checked: 2010-10-31 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
if ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (handleToolTipAgent(mClosestAgentToCursor)) )
// [RLVa:KB] - Checked: RLVa-1.2.2
bool fRlvCanShowName = (mClosestAgentToCursor.notNull()) && (RlvActions::canShowName(RlvActions::SNC_DEFAULT, mClosestAgentToCursor));
if ( (fRlvCanShowName) && (handleToolTipAgent(mClosestAgentToCursor)) )
// [/RLVa:KB]
{
return TRUE;
}
// [RLVa:KB] - Checked: 2010-10-31 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
LLStringUtil::format_map_t args;
LLAvatarName avName;
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) &&
(mClosestAgentToCursor.notNull()) && (LLAvatarNameCache::get(mClosestAgentToCursor, &avName)) )
{
args["[AGENT]"] = RlvStrings::getAnonym(avName) + "\n";
}
else
{
args["[AGENT]"] = "";
}
// [RLVa:KB] - Checked: RLVa-1.2.2
LLStringUtil::format_map_t args; LLAvatarName avName;
args["[AGENT]"] = ( (!fRlvCanShowName) && (mClosestAgentToCursor.notNull()) && (LLAvatarNameCache::get(mClosestAgentToCursor, &avName)) ) ? RlvStrings::getAnonym(avName) + "\n" : "";
// [/RLVa:KB]
LLRect sticky_rect;
@ -1029,8 +1021,8 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, MASK mask )
sticky_rect.mTop = sticky_rect.mBottom + 2 * SLOP;
// region_name = region->getName();
// [RLVa:KB] - Checked: 2010-10-19 (RLVa-1.2.2b) | Modified: RLVa-1.2.2b
region_name = ((!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) ? region->getName() : RlvStrings::getString(RLV_STRING_HIDDEN_REGION));
// [RLVa:KB] - Checked: RLVa-1.2.2
region_name = (RlvActions::canShowLocation()) ? region->getName() : RlvStrings::getString(RLV_STRING_HIDDEN_REGION);
// [/RLVa:KB]
// <FS:Ansariel> Synchronize tooltips throughout instances
//if (!region_name.empty())
@ -1553,7 +1545,7 @@ BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask)
mPopupMenu->setItemVisible("More Options", mClosestAgentsToCursor.size() == 1);
mPopupMenu->setItemVisible("View Profile", mClosestAgentsToCursor.size() == 1);
bool can_show_names = !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES);
bool can_show_names = !RlvActions::hasBehaviour(RLV_BHVR_SHOWNAMES);
mPopupMenu->setItemEnabled("Add to Set Multiple", can_show_names);
mPopupMenu->setItemEnabled("More Options", can_show_names);
mPopupMenu->setItemEnabled("View Profile", can_show_names);
@ -1601,8 +1593,8 @@ BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask)
mPopupMenu->setItemVisible("MarkAvatar", mClosestAgentToCursor.notNull());
mPopupMenu->setItemVisible("Start Tracking", mClosestAgentToCursor.notNull());
mPopupMenu->setItemVisible("Profile Separator", (mClosestAgentsToCursor.size() >= 1 || mClosestAgentToCursor.notNull()));
mPopupMenu->setItemEnabled("Place Profile", !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
mPopupMenu->setItemEnabled("World Map", !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWWORLDMAP));
mPopupMenu->setItemEnabled("Place Profile", RlvActions::canShowLocation());
mPopupMenu->setItemEnabled("World Map", !RlvActions::hasBehaviour(RLV_BHVR_SHOWWORLDMAP));
// [/SL:KB]
mPopupMenu->buildDrawLabels();
@ -1960,7 +1952,7 @@ bool LLNetMap::canMap()
bool LLNetMap::canShare()
{
return (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWINV));
return (!RlvActions::hasBehaviour(RLV_BHVR_SHOWINV));
}
bool LLNetMap::canOfferTeleport()

View File

@ -97,7 +97,7 @@ bool LLAlertHandler::processNotification(const LLNotificationPtr& notification)
// - LLHandlerUtil::logToIMP2P() below will still be called with to_file_only == false
// - LLHandlerUtil::logToIM() will eventually be called as a result and without an open IM session it will log the
// same message as it would for an open session whereas to_file_only == true would take a different code path
if ( (RlvActions::hasOpenP2PSession(from_id)) || (RlvActions::canStartIM(from_id)) )
if (RlvActions::canStartIM(from_id))
{
// [/RLVa:KB]
// firstly create session...

View File

@ -119,7 +119,7 @@ bool LLOfferHandler::processNotification(const LLNotificationPtr& notification)
// [RLVa:KB] - Checked: 2013-05-09 (RLVa-1.4.9)
// Don't spawn an IM session for non-chat related events
if ( (RlvActions::hasOpenP2PSession(from_id)) || (RlvActions::canStartIM(from_id)) )
if (RlvActions::canStartIM(from_id))
{
// [/RLVa:KB]
LLHandlerUtil::spawnIMSession(name, from_id);

View File

@ -50,6 +50,7 @@
#include "llwearableitemslist.h"
#include "llviewercontrol.h" // <FS:ND/> for gSavedSettings
#include "llresmgr.h"
#include "lltextbox.h"
static bool is_tab_header_clicked(LLAccordionCtrlTab* tab, S32 y);
@ -496,7 +497,13 @@ void LLOutfitsList::refreshList(const LLUUID& category_id)
// </FS:ND>
// <FS:Ansariel> FIRE-12939: Add outfit count to outfits list
getChild<LLTextBox>("OutfitcountText")->setTextArg("COUNT", llformat("%d", cat_array.size()));
{
std::string count_string;
LLLocale locale(LLLocale::USER_LOCALE);
LLResMgr::getInstance()->getIntegerString(count_string, (S32)cat_array.size());
getChild<LLTextBox>("OutfitcountText")->setTextArg("COUNT", count_string);
}
// </FS:Ansariel>
// Handle added tabs.
for (uuid_vec_t::const_iterator iter = vadded.begin();
@ -1235,7 +1242,11 @@ bool is_tab_header_clicked(LLAccordionCtrlTab* tab, S32 y)
// <FS:Ansariel> Show avatar complexity in appearance floater
void LLOutfitsList::updateAvatarComplexity(U32 complexity)
{
mAvatarComplexityLabel->setTextArg("[WEIGHT]", llformat("%d", complexity));
std::string complexity_string;
LLLocale locale(LLLocale::USER_LOCALE);
LLResMgr::getInstance()->getIntegerString(complexity_string, complexity);
mAvatarComplexityLabel->setTextArg("[WEIGHT]", complexity_string);
}
// </FS:Ansariel>
// EOF

View File

@ -95,8 +95,8 @@ void LLPanelExperienceListEditor::setExperienceIds( const LLSD& experience_ids )
{
mExperienceIds.clear();
// [SL:KB] - Because GCC likes to be special
// <FS:TS> ...and Clang doesn't (argh!)
#if LL_GNUC
// <FS:TS> ...and Clang does too
#if LL_GNUC || LL_CLANG
std::transform(experience_ids.beginArray(), experience_ids.endArray(), std::inserter(mExperienceIds, mExperienceIds.end()), [](const LLSD& sd) { return sd.asUUID(); });
#else
mExperienceIds.insert(experience_ids.beginArray(), experience_ids.endArray());

View File

@ -1199,8 +1199,11 @@ void LLPanelGroupMembersSubTab::confirmEjectMembers()
if (selection_count == 1)
{
LLSD args;
std::string fullname;
gCacheName->getFullName(mMembersList->getValue(), fullname);
// <FS:Ansariel> FIRE-19529: Group eject dialog doesn't show avatar name
//std::string fullname;
//gCacheName->getFullName(mMembersList->getValue(), fullname);
std::string fullname = LLSLURL("agent", mMembersList->getValue().asUUID(), "completename").getSLURLString();
// <FS:Ansariel>
args["AVATAR_NAME"] = fullname;
LLSD payload;
LLNotificationsUtil::add("EjectGroupMemberWarning",

View File

@ -130,6 +130,7 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
//mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this));
//mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2)); // <FS:Zi> Sort By menu handlers
mCommitCallbackRegistrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, this));
// <FS:Zi> Filter Links Menu
@ -192,8 +193,6 @@ BOOL LLPanelMainInventory::postBuild()
mExpandBtn->setClickedCallback(boost::bind(&LLPanelMainInventory::onExpandButtonClicked, this));
// </FS:Zi> Inventory Collapse and Expand Buttons
mItemcountText=getChild<LLTextBox>("ItemcountText");
mFilterTabs = getChild<LLTabContainer>("inventory filter tabs");
mFilterTabs->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterSelected, this));
@ -560,36 +559,16 @@ void LLPanelMainInventory::onClearSearch()
{
BOOL initially_active = FALSE;
LLFloater *finder = getFinder();
// <FS:Ansariel> FIRE-5160: Don't reset inventory filter when clearing search term
// if (mActivePanel)
// {
// initially_active = mActivePanel->getFilter().isNotDefault();
// mActivePanel->setFilterSubString(LLStringUtil::null);
// // <FS:Ansariel>
// //mActivePanel->setFilterTypes(0xffffffffffffffffULL);
// if (mActivePanel->getName() == "Recent Items" || mActivePanel->getName() == "Worn Items")
// {
// mActivePanel->getFilter().resetDefault();
// }
// else
// {
// mActivePanel->setFilterTypes(0xffffffffffffffffULL);
// }
// // </FS:Ansariel>
//
// // ## Zi: Filter Links Menu
// // We don't do this anymore, we have a menu option for it now. -Zi
//// mActivePanel->setFilterLinks(LLInventoryFilter::FILTERLINK_INCLUDE_LINKS);
// // <FS:Zi> make sure the dropdown shows "All Types" once again
// LLInventoryFilter &filter = mActivePanel->getFilter();
// updateFilterDropdown(&filter);
// // </FS:Zi>
// }
if (mActivePanel)
{
// <FS:Ansariel> FIRE-5160: Don't reset inventory filter when clearing search term
//initially_active = mActivePanel->getFilter().isNotDefault();
//mActivePanel->setFilterSubString(LLStringUtil::null);
//mActivePanel->setFilterTypes(0xffffffffffffffffULL);
//mActivePanel->setFilterLinks(LLInventoryFilter::FILTERLINK_INCLUDE_LINKS);
mActivePanel->setFilterSubString(LLStringUtil::null);
// </FS:Ansariel>
}
// </FS:Ansariel>
if (finder)
{
@ -661,38 +640,47 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
// </FS:Ansariel> Separate search for inventory tabs from Satomi Ahn (FIRE-913 & FIRE-6862)
}
// ## Zi: Filter dropdown
// <FS:Zi> Filter dropdown
void LLPanelMainInventory::onFilterTypeSelected(const std::string& filter_type_name)
{
if (!mActivePanel)
{
return;
}
// by default enable everything
U64 filterTypes=~0;
U64 filterTypes = ~0;
// get the pointer to the filter subwindow
LLFloaterInventoryFinder* finder=getFinder();
LLFloaterInventoryFinder* finder = getFinder();
// find the filter name in our filter map
if(mFilterMap.find(filter_type_name)!=mFilterMap.end())
if (mFilterMap.find(filter_type_name) != mFilterMap.end())
{
filterTypes=mFilterMap[filter_type_name];
filterTypes = mFilterMap[filter_type_name];
}
// special treatment for "all" filter
else if(filter_type_name=="filter_type_all")
else if (filter_type_name == "filter_type_all")
{
// update subwindow if it's open
if (finder)
{
LLFloaterInventoryFinder::selectAllTypes(finder);
}
}
// special treatment for "custom" filter
else if(filter_type_name=="filter_type_custom")
else if (filter_type_name == "filter_type_custom")
{
// open the subwindow if needed, otherwise just give it focus
if(!finder)
if (!finder)
{
toggleFindOptions();
}
else
{
finder->setFocus(TRUE);
}
return;
}
// invalid selection (broken XML?)
@ -704,45 +692,53 @@ void LLPanelMainInventory::onFilterTypeSelected(const std::string& filter_type_n
mActivePanel->setFilterTypes(filterTypes);
// update subwindow if it's open
if(finder)
if (finder)
{
finder->updateElementsFromFilter();
}
}
// reflect state of current filter selection in the dropdown list
void LLPanelMainInventory::updateFilterDropdown(const LLInventoryFilter* filter)
{
// if we don't have a filter combobox (missing in the skin and failed to create?) do nothing
if(!mFilterComboBox)
if (!mFilterComboBox)
{
return;
}
// extract filter bits we need to see
U64 filterTypes=filter->getFilterObjectTypes() & mFilterMask;
U64 filterTypes = filter->getFilterObjectTypes() & mFilterMask;
std::string controlName;
// check if the filter types match our filter mask, meaning "All"
if(filterTypes==mFilterMask)
controlName="filter_type_all";
if (filterTypes == mFilterMask)
{
controlName = "filter_type_all";
}
else
{
// find the name of the current filter in our filter map, if exists
for(std::map<std::string,U64>::iterator i=mFilterMap.begin();i!=mFilterMap.end();i++)
for (std::map<std::string, U64>::iterator it = mFilterMap.begin(); it != mFilterMap.end(); ++it)
{
if((*i).second==filterTypes)
if ((*it).second == filterTypes)
{
controlName=(*i).first;
controlName = (*it).first;
break;
}
}
// no filter type found in the map, must be a custom filter
if(controlName.empty())
controlName="filter_type_custom";
if (controlName.empty())
{
controlName = "filter_type_custom";
}
}
mFilterComboBox->setValue(controlName);
}
// ## Zi: Filter dropdown
// </FS:Zi> Filter dropdown
//static
BOOL LLPanelMainInventory::incrementalFind(LLFolderViewItem* first_item, const char *find_text, BOOL backward)
@ -801,7 +797,7 @@ void LLPanelMainInventory::onFilterSelected()
setFilterSubString(mFilterSubString);
}
// </FS:Ansariel> Separate search for inventory tabs from Satomi Ahn (FIRE-913 & FIRE-6862)
LLInventoryFilter &filter = mActivePanel->getFilter();
LLInventoryFilter& filter = mActivePanel->getFilter();
LLFloaterInventoryFinder *finder = getFinder();
if (finder)
{
@ -812,7 +808,7 @@ void LLPanelMainInventory::onFilterSelected()
// If our filter is active we may be the first thing requiring a fetch so we better start it here.
LLInventoryModelBackgroundFetch::instance().start();
}
updateFilterDropdown(&filter); // ## Zi: Filter dropdown
updateFilterDropdown(&filter); // <FS:Zi> Filter dropdown
setFilterTextFromFilter();
}
@ -930,7 +926,7 @@ void LLPanelMainInventory::updateItemcountText()
{
text = getString("ItemcountUnknown", string_args);
}
mCounterCtrl->setValue(text);
}
@ -948,7 +944,7 @@ void LLPanelMainInventory::onFocusReceived()
void LLPanelMainInventory::setFilterTextFromFilter()
{
//mFilterText = mActivePanel->getFilter().getFilterText();
//mFilterText = mActivePanel->getFilter().getFilterText();
// <FS:Zi> Filter dropdown
// this method gets called by the filter subwindow (once every frame), so we update our combo box here
LLInventoryFilter &filter = mActivePanel->getFilter();
@ -1671,7 +1667,7 @@ BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)
return FALSE;
}
// ## Zi: Filter Links Menu
// <FS:Zi> Filter Links Menu
void LLPanelMainInventory::onFilterLinksChecked(const LLSD& userdata)
{
const std::string command_name = userdata.asString();
@ -1711,9 +1707,9 @@ BOOL LLPanelMainInventory::isFilterLinksChecked(const LLSD& userdata)
return FALSE;
}
// ## Zi: Filter Links Menu
// </FS:Zi> Filter Links Menu
// ## Zi: Extended Inventory Search
// <FS:Zi> Extended Inventory Search
void LLPanelMainInventory::onSearchTargetChecked(const LLSD& userdata)
{
getActivePanel()->setFilterSubStringTarget(userdata.asString());
@ -1730,31 +1726,31 @@ BOOL LLPanelMainInventory::isSearchTargetChecked(const LLSD& userdata)
const std::string command_name = userdata.asString();
if (command_name == "name")
{
return (getSearchTarget()==LLInventoryFilter::SUBST_TARGET_NAME);
return (getSearchTarget() == LLInventoryFilter::SUBST_TARGET_NAME);
}
if (command_name == "creator")
{
return (getSearchTarget()==LLInventoryFilter::SUBST_TARGET_CREATOR);
return (getSearchTarget() == LLInventoryFilter::SUBST_TARGET_CREATOR);
}
if (command_name == "description")
{
return (getSearchTarget()==LLInventoryFilter::SUBST_TARGET_DESCRIPTION);
return (getSearchTarget() == LLInventoryFilter::SUBST_TARGET_DESCRIPTION);
}
if (command_name == "uuid")
{
return (getSearchTarget()==LLInventoryFilter::SUBST_TARGET_UUID);
return (getSearchTarget() == LLInventoryFilter::SUBST_TARGET_UUID);
}
if (command_name == "all")
{
return (getSearchTarget()==LLInventoryFilter::SUBST_TARGET_ALL);
return (getSearchTarget() == LLInventoryFilter::SUBST_TARGET_ALL);
}
return FALSE;
}
// ## Zi: Extended Inventory Search
// </FS:Zi> Extended Inventory Search
bool LLPanelMainInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
{

View File

@ -153,7 +153,6 @@ private:
std::string mFilterSubString;
S32 mItemCount;
std::string mItemCountString;
LLTextBox* mItemcountText;
// <FS:Zi> Filter dropdown
LLComboBox* mFilterComboBox;

View File

@ -772,6 +772,18 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// [/RLVa:KB]
}
items.push_back(std::string("Task Properties"));
// [RLVa:KB] - Checked: 2010-09-28 (RLVa-1.2.1f) | Added: RLVa-1.2.1f
items.push_back(std::string("Task Rename"));
if ( (!isItemRenameable()) || ((flags & FIRST_SELECTED_ITEM) == 0) )
{
disabled_items.push_back(std::string("Task Rename"));
}
items.push_back(std::string("Task Remove"));
if (!isItemRemovable())
{
disabled_items.push_back(std::string("Task Remove"));
}
// [/RLVa:KB]
// if(isItemRenameable())
// {
// items.push_back(std::string("Task Rename"));
@ -784,18 +796,6 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// {
// items.push_back(std::string("Task Remove"));
// }
// [RLVa:KB] - Checked: 2010-09-28 (RLVa-1.2.1f) | Added: RLVa-1.2.1f
items.push_back(std::string("Task Rename"));
items.push_back(std::string("Task Remove"));
if (!isItemRenameable() || (flags & FIRST_SELECTED_ITEM) == 0)
{
disabled_items.push_back(std::string("Task Rename"));
}
if (!isItemRemovable())
{
disabled_items.push_back(std::string("Task Remove"));
}
// [/RLVa:KB]
hide_context_entries(menu, items, disabled_items);
}
@ -1294,6 +1294,7 @@ void LLTaskNotecardBridge::openItem()
{
return;
}
// [RLVa:KB] - Checked: 2010-03-27 (RLVa-1.2.0b) | Modified: RLVa-1.2.0b
if ( (rlv_handler_t::isEnabled()) && (gRlvAttachmentLocks.isLockedAttachment(object->getRootEdit())) )
{

View File

@ -76,6 +76,7 @@
// [RLVa:KB] - Checked: 2010-09-16 (RLVa-1.2.1a)
#include "rlvhandler.h"
// [/RLVa:KB]
#include "llresmgr.h"
static LLPanelInjector<LLPanelOutfitEdit> t_outfit_edit("panel_outfit_edit");
@ -1073,9 +1074,11 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
case LLAssetType::AT_BODYPART:
applyListViewFilter(LVIT_BODYPART);
break;
case LLAssetType::AT_GESTURE:
applyListViewFilter(LVIT_GESTURES);
break;
// <FS:Ansariel> FIRE-19480 / BUG-20032: Selected wearable type in Edit Outfit -> Add more is off by 1
//case LLAssetType::AT_GESTURE:
// applyListViewFilter(LVIT_GESTURES);
// break;
// </FS:Ansariel>
case LLAssetType::AT_CLOTHING:
default:
applyListViewFilter(LVIT_CLOTHING);
@ -1437,8 +1440,12 @@ void LLPanelOutfitEdit::saveListSelection()
// <FS:Ansariel> Show avatar complexity in appearance floater
void LLPanelOutfitEdit::updateAvatarComplexity(U32 complexity)
{
mAvatarComplexityLabel->setTextArg("[WEIGHT]", llformat("%d", complexity));
mAvatarComplexityAddingLabel->setTextArg("[WEIGHT]", llformat("%d", complexity));
std::string complexity_string;
LLLocale locale(LLLocale::USER_LOCALE);
LLResMgr::getInstance()->getIntegerString(complexity_string, complexity);
mAvatarComplexityLabel->setTextArg("[WEIGHT]", complexity_string);
mAvatarComplexityAddingLabel->setTextArg("[WEIGHT]", complexity_string);
}
// </FS:Ansariel>

View File

@ -80,7 +80,7 @@ public:
{
LVIT_ALL = 0,
LVIT_CLOTHING,
LVIT_GESTURES,
//LVIT_GESTURES, // <FS:Ansariel> FIRE-19480 / BUG-20032: Selected wearable type in Edit Outfit -> Add more is off by 1
LVIT_BODYPART,
LVIT_ATTACHMENT,
LVIT_SHAPE,

View File

@ -75,6 +75,10 @@
#include "llagentui.h"
#include "llslurl.h"
#include "llevents.h" // for LLEventPumps
// [RLVa:KB] - Checked: RLVa-1.2.2
#include "rlvactions.h"
// [/RLVa:KB]
// Firestorm includes
#include "fscommon.h"
@ -82,7 +86,6 @@
#include "lggcontactsets.h"
#include "llcombobox.h"
#include "lllayoutstack.h"
#include "rlvhandler.h"
#include <boost/foreach.hpp>
@ -693,7 +696,7 @@ BOOL LLPanelPeople::postBuild()
//mNearbyList->setShowIcons("NearbyListShowIcons");
//mNearbyList->setShowCompleteName(!gSavedSettings.getBOOL("NearbyListHideUsernames"));
// </FS:Ansariel> Firestorm radar
// [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.2a) | Added: RLVa-1.2.0d
// [RLVa:KB] - Checked: RLVa-1.2.0
// Externalized to FSRadar
//mNearbyList->setRlvCheckShowNames(true);
// [/RLVa:KB]
@ -1010,7 +1013,7 @@ void LLPanelPeople::updateFacebookList(bool visible)
void LLPanelPeople::updateButtons()
{
std::string cur_tab = getActiveTabName();
// [RLVa:KB] - Checked: 2013-05-06 (RLVa-1.4.9)
// [RLVa:KB] - Checked: RLVa-1.4.9
bool nearby_tab_active = (cur_tab == NEARBY_TAB_NAME);
// [/RLVa:KB]
bool friends_tab_active = (cur_tab == FRIENDS_TAB_NAME);
@ -1060,7 +1063,7 @@ void LLPanelPeople::updateButtons()
//if (cur_panel->hasChild("add_friend_btn", TRUE))
// cur_panel->getChildView("add_friend_btn")->setEnabled(item_selected && !is_friend && !is_self);
if (!nearby_tab_active && cur_panel->hasChild("add_friend_btn", TRUE))
cur_panel->getChildView("add_friend_btn")->setEnabled(item_selected && !is_friend && !is_self && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
cur_panel->getChildView("add_friend_btn")->setEnabled(item_selected && !is_friend && !is_self && RlvActions::canShowName(RlvActions::SNC_DEFAULT, selected_id));
// </FS:Ansariel> RLVa check
if (friends_tab_active)
@ -1077,6 +1080,16 @@ void LLPanelPeople::updateButtons()
}
}
}
// [RLVa:KB] - Checked: RLVa-1.2.0
if ( (nearby_tab_active) && (RlvActions::isRlvEnabled()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) )
{
bool fCanShowNames = true;
std::for_each(selected_uuids.begin(), selected_uuids.end(), [&fCanShowNames](const LLUUID& idAgent) { fCanShowNames &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
if (!fCanShowNames)
item_selected = multiple_selected = false;
}
// [/RLBa:KB]
}
std::string LLPanelPeople::getActiveTabName() const
@ -1323,6 +1336,13 @@ void LLPanelPeople::onAvatarListDoubleClicked(LLUICtrl* ctrl)
return;
}
// [RLVa:KB] - Checked: RLVa-2.0.1
if ( (RlvActions::isRlvEnabled()) && (NEARBY_TAB_NAME == getActiveTabName()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, clicked_id)) )
{
return;
}
// [/RLVa:KB]
#if 0 // SJB: Useful for testing, but not currently functional or to spec
LLAvatarActions::showProfile(clicked_id);
#else // spec says open IM window
@ -1439,6 +1459,15 @@ void LLPanelPeople::onImButtonClicked()
{
uuid_vec_t selected_uuids;
getCurrentItemIDs(selected_uuids);
// [RLVa:KB] - Checked: RLVa-2.0.1
if ( (RlvActions::isRlvEnabled()) && (NEARBY_TAB_NAME == getActiveTabName()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) )
{
bool fCanShowNames = true;
std::for_each(selected_uuids.begin(), selected_uuids.end(), [&fCanShowNames](const LLUUID& idAgent) { fCanShowNames &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
if (!fCanShowNames)
return;
}
// [/RLVa:KB]
if ( selected_uuids.size() == 1 )
{
// if selected only one person then start up IM

View File

@ -69,6 +69,10 @@ public:
bool mTryToConnectToFacebook;
// [RLVa:KB] - Checked: RLVa-1.2.0
LLAvatarList* getNearbyList() { return mNearbyList; }
// [/RLVa:KB]
// internals
class Updater;

View File

@ -48,7 +48,9 @@
#include "llvoavatarself.h"
#include "roles_constants.h"
#include "llinventorybridge.h" // <FS:CR> CHUI merge
#include "rlvhandler.h"
// [RLVa:KB] - Checked: RLVa-2.0.1
#include "rlvactions.h"
// [/RLVa:KB]
namespace LLPanelPeopleMenus
{
@ -210,7 +212,10 @@ bool PeopleContextMenu::enableContextMenuItem(const LLSD& userdata)
for (;id != uuids_end; ++id)
{
if ( LLAvatarActions::isFriend(*id) )
// if ( LLAvatarActions::isFriend(*id) )
// [RLVa:KB] - Checked: 2014-03-31 (RLVa-2.0.1)
if ( (LLAvatarActions::isFriend(*id)) || (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, *id)) )
// [/RLVa:KB]
{
result = false;
break;
@ -233,7 +238,10 @@ bool PeopleContextMenu::enableContextMenuItem(const LLSD& userdata)
for (;id != uuids_end; ++id)
{
if ( !LLAvatarActions::isFriend(*id) )
// if ( !LLAvatarActions::isFriend(*id) )
// [RLVa:KB] - Checked: 2014-03-31 (RLVa-2.0.1)
if ( (!LLAvatarActions::isFriend(*id)) || (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, *id)) )
// [/RLVa:KB]
{
result = false;
break;
@ -276,7 +284,7 @@ bool PeopleContextMenu::enableContextMenuItem(const LLSD& userdata)
// <FS:Ansariel> FIRE-8804: Prevent opening inventory from using share in radar context menu
else if (item == std::string("can_open_inventory"))
{
return (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWINV));
return (!RlvActions::hasBehaviour(RLV_BHVR_SHOWINV));
}
// </FS:Ansariel>
else if (item == std::string("can_callog"))
@ -352,14 +360,29 @@ void PeopleContextMenu::requestTeleport()
{
// boost::bind cannot recognize overloaded method LLAvatarActions::teleportRequest(),
// so we have to use a wrapper.
// [RLVa:KB] - Checked: RLVa-2.0.1
bool fRlvCanShowName = (!m_fRlvCheck) || (RlvActions::canShowName(RlvActions::SNC_DEFAULT, mUUIDs.front()));
RlvActions::setShowName(RlvActions::SNC_TELEPORTREQUEST, fRlvCanShowName);
LLAvatarActions::teleportRequest(mUUIDs.front());
RlvActions::setShowName(RlvActions::SNC_TELEPORTREQUEST, true);
// [/RLVa:KB]
// LLAvatarActions::teleportRequest(mUUIDs.front());
}
void PeopleContextMenu::offerTeleport()
{
// boost::bind cannot recognize overloaded method LLAvatarActions::offerTeleport(),
// so we have to use a wrapper.
// [RLVa:KB] - Checked: RLVa-2.0.1
bool fRlvCanShowName = true;
if ( (m_fRlvCheck) && (RlvActions::isRlvEnabled()) )
std::for_each(mUUIDs.begin(), mUUIDs.end(), [&fRlvCanShowName](const LLUUID& idAgent) { fRlvCanShowName &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
RlvActions::setShowName(RlvActions::SNC_TELEPORTOFFER, fRlvCanShowName);
LLAvatarActions::offerTeleport(mUUIDs);
RlvActions::setShowName(RlvActions::SNC_TELEPORTOFFER, true);
// [/RLVa:KB]
// LLAvatarActions::offerTeleport(mUUIDs);
}
void PeopleContextMenu::eject()
@ -422,7 +445,29 @@ void NearbyPeopleContextMenu::buildContextMenu(class LLMenuGL& menu, U32 flags)
menuentry_vec_t items;
menuentry_vec_t disabled_items;
if (flags & ITEM_IN_MULTI_SELECTION)
// [RLVa:KB] - Checked: RLVa-1.5.0
bool fRlvCanShowName = true;
if ( (m_fRlvCheck) && (RlvActions::isRlvEnabled()) )
std::for_each(mUUIDs.begin(), mUUIDs.end(), [&fRlvCanShowName](const LLUUID& idAgent) { fRlvCanShowName &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
if (!fRlvCanShowName)
{
if (flags & ITEM_IN_MULTI_SELECTION)
{
items.push_back(std::string("offer_teleport"));
}
else
{
items.push_back(std::string("offer_teleport"));
items.push_back(std::string("request_teleport"));
items.push_back(std::string("separator_invite_to_group"));
items.push_back(std::string("zoom_in"));
items.push_back(std::string("block_unblock"));
}
}
else if (flags & ITEM_IN_MULTI_SELECTION)
// [/RLVa:KB]
// if (flags & ITEM_IN_MULTI_SELECTION)
{
items.push_back(std::string("add_friends"));
items.push_back(std::string("remove_friends"));

View File

@ -38,6 +38,9 @@ namespace LLPanelPeopleMenus
class PeopleContextMenu : public LLListContextMenu
{
public:
// [RLVa:KB] - Checked: RLVa-1.5.0
PeopleContextMenu() : m_fRlvCheck(false) {}
// [/RLVa:KB]
/*virtual*/ LLContextMenu* createMenu();
protected:
@ -54,6 +57,10 @@ private:
// <FS:Ansariel> Add to contact set
void addToContactSet();
// [RLVa:KB] - Checked: RLVa-1.5.0
protected:
bool m_fRlvCheck;
// [/RLVa:KB]
};
/**
@ -61,6 +68,10 @@ private:
*/
class NearbyPeopleContextMenu : public PeopleContextMenu
{
// [RLVa:KB] - Checked: RLVa-1.5.0
public:
NearbyPeopleContextMenu() : PeopleContextMenu() { m_fRlvCheck = true; }
// [/RLVa:KB]
protected:
/*virtual*/ void buildContextMenu(class LLMenuGL& menu, U32 flags);
};

Some files were not shown because too many files have changed in this diff Show More