Merge Firestorm LGPL
commit
ea28514d3b
|
|
@ -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
|
||||
|
|
@ -1 +1 @@
|
|||
6fe7cc30ebc09cfe92787b71fa9dc55fd0396ec5
|
||||
471361eabfbf2865016a50e8087712b2266e83c7
|
||||
|
|
@ -1 +1 @@
|
|||
543c14d1270ba0327474287b08ae6463d8c03fdb
|
||||
264c7688ecdba8432a64f36a24e389eb85cbc10d
|
||||
|
|
@ -1 +1 @@
|
|||
a48d42d15595c42a3ccb17a7c5ed246b87225cf3
|
||||
59b305ccfba9d4ba7935475d31f94b6ecfe415a4
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ private:
|
|||
|
||||
F32 mValue;
|
||||
LLUIColor mColor;
|
||||
bool operator <(const Threshold& other)
|
||||
bool operator <(const Threshold& other) const
|
||||
{
|
||||
return mValue < other.mValue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
||||
/********************************************************************************
|
||||
** **
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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++)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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) )
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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...
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ private:
|
|||
std::string mFilterSubString;
|
||||
S32 mItemCount;
|
||||
std::string mItemCountString;
|
||||
LLTextBox* mItemcountText;
|
||||
|
||||
// <FS:Zi> Filter dropdown
|
||||
LLComboBox* mFilterComboBox;
|
||||
|
|
|
|||
|
|
@ -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())) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -69,6 +69,10 @@ public:
|
|||
|
||||
bool mTryToConnectToFacebook;
|
||||
|
||||
// [RLVa:KB] - Checked: RLVa-1.2.0
|
||||
LLAvatarList* getNearbyList() { return mNearbyList; }
|
||||
// [/RLVa:KB]
|
||||
|
||||
// internals
|
||||
class Updater;
|
||||
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue