Compare commits
22 Commits
sv-1.8.7.8
...
sv-1.8.7.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77f500cb64 | ||
|
|
d04a8fc677 | ||
|
|
6028ae7b61 | ||
|
|
347c2cbd8b | ||
|
|
919ffb314b | ||
|
|
c033d69d54 | ||
|
|
356d289972 | ||
|
|
eeabbce377 | ||
|
|
0b992fdd46 | ||
|
|
a7e56d2af9 | ||
|
|
b10619e4d8 | ||
|
|
74518f299c | ||
|
|
407b527a55 | ||
|
|
b21cc835b2 | ||
|
|
4de8c3a38e | ||
|
|
72d8b8f78c | ||
|
|
45f4f601bf | ||
|
|
731283aa0b | ||
|
|
89ce328ba5 | ||
|
|
28e5270d87 | ||
|
|
4a237de72a | ||
|
|
e91aac1dd9 |
@@ -1933,38 +1933,6 @@
|
||||
<key>version</key>
|
||||
<string>7.11.1.297294</string>
|
||||
</map>
|
||||
<key>modernjson</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2013-2018 Niels Lohmann</string>
|
||||
<key>description</key>
|
||||
<string>JSON for Modern C++</string>
|
||||
<key>license</key>
|
||||
<string>MIT</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/modernjson.txt</string>
|
||||
<key>name</key>
|
||||
<string>modernjson</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>common</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6f11eca7e2a6ca61f9217e949a64f026</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://depot.alchemyviewer.org/pub/common/lib/modernjson-3.2.0-common-201809210551.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>common</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>3.2.0</string>
|
||||
</map>
|
||||
<key>nvapi</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
|
||||
@@ -50,7 +50,6 @@ set(cmake_SOURCE_FILES
|
||||
GooglePerfTools.cmake
|
||||
Hunspell.cmake
|
||||
JPEG.cmake
|
||||
Json.cmake
|
||||
LLAddBuildTest.cmake
|
||||
LLAppearance.cmake
|
||||
LLAudio.cmake
|
||||
|
||||
@@ -15,10 +15,15 @@ FetchContent_Declare(
|
||||
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
|
||||
GIT_TAG 6.1.2
|
||||
)
|
||||
FetchContent_Declare(
|
||||
nlohmann_json
|
||||
GIT_REPOSITORY https://github.com/nlohmann/json.git
|
||||
GIT_TAG v3.7.3
|
||||
)
|
||||
FetchContent_Declare(
|
||||
absl
|
||||
GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
|
||||
GIT_TAG 29235139149790f5afc430c11cec8f1eb1677607
|
||||
GIT_TAG 0033c9ea91a52ade7c6b725aa2ef3cbe15463421
|
||||
)
|
||||
|
||||
# This is a hack because absl has dumb cmake
|
||||
@@ -44,5 +49,14 @@ if(WINDOWS)
|
||||
FetchContent_MakeAvailable(fmt)
|
||||
endif()
|
||||
|
||||
# Typically you don't care so much for a third party library's tests to be
|
||||
# run from your own project's code.
|
||||
set(JSON_BuildTests OFF CACHE INTERNAL "")
|
||||
|
||||
# If you only include this third party in PRIVATE source files, you do not
|
||||
# need to install it when your main project gets installed.
|
||||
set(JSON_Install OFF CACHE INTERNAL "")
|
||||
FetchContent_MakeAvailable(nlohmann_json)
|
||||
|
||||
unset(CMAKE_FOLDER)
|
||||
unset(CMAKE_POSITION_INDEPENDENT_CODE)
|
||||
|
||||
@@ -12,7 +12,6 @@ include(Linking)
|
||||
include(Boost)
|
||||
include(OpenSSL)
|
||||
include(LLSharedLibs)
|
||||
include(Json)
|
||||
include(Copy3rdPartyLibs)
|
||||
include(ZLIB)
|
||||
include(URIPARSER)
|
||||
@@ -300,6 +299,7 @@ target_link_libraries(
|
||||
${Boost_SYSTEM_LIBRARY}
|
||||
${CORESERVICES_LIBRARY}
|
||||
${URIPARSER_LIBRARY}
|
||||
nlohmann_json::nlohmann_json
|
||||
${RT_LIBRARY}
|
||||
)
|
||||
|
||||
|
||||
@@ -182,10 +182,10 @@ public:
|
||||
bool operator! () const { return ! mListener; }
|
||||
|
||||
/// explicit accessor
|
||||
const LLEventListener& getListener() const { return *mListener; }
|
||||
const ::LLEventListener& getListener() const { return *mListener; }
|
||||
|
||||
/// implicit conversion to LLEventListener
|
||||
operator LLEventListener() const { return *mListener; }
|
||||
operator ::LLEventListener() const { return *mListener; }
|
||||
|
||||
/// allow calling directly
|
||||
bool operator()(const LLSD& event) const;
|
||||
@@ -277,7 +277,7 @@ namespace LLEventDetail
|
||||
/// Any callable capable of connecting an LLEventListener to an
|
||||
/// LLStandardSignal to produce an LLBoundListener can be mapped to this
|
||||
/// signature.
|
||||
typedef boost::function<LLBoundListener(const LLEventListener&)> ConnectFunc;
|
||||
typedef boost::function<LLBoundListener(const ::LLEventListener&)> ConnectFunc;
|
||||
|
||||
/// overload of visit_and_connect() when we have a string identifier available
|
||||
template <typename LISTENER>
|
||||
@@ -547,7 +547,7 @@ private:
|
||||
virtual void reset();
|
||||
|
||||
private:
|
||||
virtual LLBoundListener listen_impl(const std::string& name, const LLEventListener&,
|
||||
virtual LLBoundListener listen_impl(const std::string& name, const ::LLEventListener&,
|
||||
const NameList& after,
|
||||
const NameList& before);
|
||||
std::string mName;
|
||||
@@ -845,7 +845,7 @@ namespace LLEventDetail
|
||||
* Visitor binds a reference to LLEventListener so we can track() any
|
||||
* shared_ptrs we find in the argument list.
|
||||
*/
|
||||
Visitor(LLEventListener& listener):
|
||||
Visitor(::LLEventListener& listener):
|
||||
mListener(listener)
|
||||
{
|
||||
}
|
||||
@@ -988,7 +988,7 @@ namespace LLEventDetail
|
||||
|*==========================================================================*/
|
||||
|
||||
/// Bind a reference to the LLEventListener to call its track() method.
|
||||
LLEventListener& mListener;
|
||||
::LLEventListener& mListener;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1005,7 +1005,7 @@ namespace LLEventDetail
|
||||
const ConnectFunc& connect_func)
|
||||
{
|
||||
// Capture the listener
|
||||
LLEventListener listener(raw_listener);
|
||||
::LLEventListener listener(raw_listener);
|
||||
// Define our Visitor, binding the listener so we can call
|
||||
// listener.track() if we discover any shared_ptr<Foo>.
|
||||
LLEventDetail::Visitor visitor(listener);
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#endif
|
||||
|
||||
extern U32 gOctreeMaxCapacity;
|
||||
extern float gOctreeMinSize;
|
||||
extern U32 gOctreeReserveCapacity;
|
||||
#if LL_DEBUG
|
||||
#define LL_OCTREE_PARANOIA_CHECK 0
|
||||
@@ -404,7 +405,7 @@ public:
|
||||
F32 size = mSize[0];
|
||||
F32 p_size = size * 2.f;
|
||||
|
||||
return (radius <= 0.001f && size <= 0.001f) ||
|
||||
return (radius <= gOctreeMinSize && size <= gOctreeMinSize) ||
|
||||
(radius <= p_size && radius > size);
|
||||
}
|
||||
|
||||
@@ -511,7 +512,7 @@ public:
|
||||
//is it here?
|
||||
if (isInside(data->getPositionGroup()))
|
||||
{
|
||||
if (((getElementCount() < gOctreeMaxCapacity && contains(data->getBinRadius())) ||
|
||||
if ((((getElementCount() < gOctreeMaxCapacity || getSize()[0] <= gOctreeMinSize) && contains(data->getBinRadius())) ||
|
||||
(data->getBinRadius() > getSize()[0] && parent && parent->getElementCount() >= gOctreeMaxCapacity)))
|
||||
{ //it belongs here
|
||||
/*mElementCount++;
|
||||
@@ -566,8 +567,9 @@ public:
|
||||
LLVector4a val;
|
||||
val.setSub(center, getCenter());
|
||||
val.setAbs(val);
|
||||
|
||||
S32 lt = val.lessThan(LLVector4a::getEpsilon()).getGatheredBits() & 0x7;
|
||||
LLVector4a min_diff(gOctreeMinSize);
|
||||
|
||||
S32 lt = val.lessThan(min_diff).getGatheredBits() & 0x7;
|
||||
|
||||
if( lt == 0x7 )
|
||||
{
|
||||
@@ -616,6 +618,7 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
llassert(size[0] >= gOctreeMinSize*0.5f);
|
||||
//make the new kid
|
||||
child = new LLOctreeNode<T>(center, size, this);
|
||||
addChild(child);
|
||||
@@ -623,10 +626,7 @@ public:
|
||||
child->insert(data);
|
||||
}
|
||||
}
|
||||
// Singu note: now that we allow wider range in octree, discard them here
|
||||
// if they fall out of range
|
||||
#if 0
|
||||
else
|
||||
else if (parent)
|
||||
{
|
||||
//it's not in here, give it to the root
|
||||
OCT_ERRS << "Octree insertion failed, starting over from root!" << LL_ENDL;
|
||||
@@ -639,12 +639,15 @@ public:
|
||||
parent = node->getOctParent();
|
||||
}
|
||||
|
||||
if(node != this)
|
||||
{
|
||||
node->insert(data);
|
||||
}
|
||||
node->insert(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
// It's not in here, and we are root.
|
||||
// LLOctreeRoot::insert() should have expanded
|
||||
// root by now, something is wrong
|
||||
OCT_ERRS << "Octree insertion failed! Root expansion failed." << LL_ENDL;
|
||||
}
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -1050,10 +1053,15 @@ public:
|
||||
{
|
||||
LLOctreeNode<T>::insert(data);
|
||||
}
|
||||
else
|
||||
else if (node->isInside(data->getPositionGroup()))
|
||||
{
|
||||
node->insert(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
// calling node->insert(data) will return us to root
|
||||
OCT_ERRS << "Failed to insert data at child node" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else if (this->getChildCount() == 0)
|
||||
{
|
||||
@@ -1088,6 +1096,8 @@ public:
|
||||
this->setSize(size2);
|
||||
this->updateMinMax();
|
||||
|
||||
llassert(size[0] >= gOctreeMinSize);
|
||||
|
||||
//copy our children to a new branch
|
||||
LLOctreeNode<T>* newnode = new LLOctreeNode<T>(center, size, this);
|
||||
|
||||
|
||||
@@ -666,7 +666,7 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::get(agent_id, &av_name))
|
||||
{
|
||||
std::string label = av_name.getCompleteName();
|
||||
std::string label = av_name.getNSName();
|
||||
|
||||
// handle suffixes like /mute or /offerteleport
|
||||
label = localize_slapp_label(url, label);
|
||||
|
||||
@@ -18,7 +18,6 @@ include(FMODSTUDIO)
|
||||
include(GeneratePrecompiledHeader)
|
||||
include(GLOD)
|
||||
include(Hunspell)
|
||||
include(Json)
|
||||
include(LLAddBuildTest)
|
||||
include(LLAppearance)
|
||||
include(LLAudio)
|
||||
@@ -63,7 +62,6 @@ include_directories(
|
||||
${STATEMACHINE_INCLUDE_DIRS}
|
||||
${DBUSGLIB_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
${JSON_INCLUDE_DIR}
|
||||
${GLOD_INCLUDE_DIR}
|
||||
${LLAUDIO_INCLUDE_DIRS}
|
||||
${LLCHARACTER_INCLUDE_DIRS}
|
||||
@@ -1710,6 +1708,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
${LLAPPEARANCE_LIBRARIES}
|
||||
absl::flat_hash_map
|
||||
absl::node_hash_map
|
||||
nlohmann_json::nlohmann_json
|
||||
${FMT_LIBRARY}
|
||||
)
|
||||
|
||||
|
||||
@@ -12628,6 +12628,18 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<integer>128</integer>
|
||||
</map>
|
||||
|
||||
<key>OctreeMinimumNodeSize</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Minimum size of any octree node</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.01</real>
|
||||
</map>
|
||||
|
||||
<key>OctreeReserveNodeCapacity</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -221,13 +221,40 @@
|
||||
#include <client/crashpad_client.h>
|
||||
#include <client/prune_crash_reports.h>
|
||||
#include <client/settings.h>
|
||||
#include <client/annotation.h>
|
||||
|
||||
#include <fmt/format.h>
|
||||
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llversioninfo.h"
|
||||
|
||||
|
||||
template <size_t SIZE, crashpad::Annotation::Type T = crashpad::Annotation::Type::kString>
|
||||
struct crashpad_annotation : public crashpad::Annotation {
|
||||
std::array<char, SIZE> buffer;
|
||||
crashpad_annotation(const char* name) : crashpad::Annotation(T, name, buffer.data())
|
||||
{}
|
||||
void set(const std::string& src) {
|
||||
LL_INFOS() << name() << ": " << src.c_str() << LL_ENDL;
|
||||
const size_t min_size = llmin(SIZE, src.size());
|
||||
memcpy(buffer.data(), src.data(), min_size);
|
||||
buffer.data()[SIZE - 1] = '\0';
|
||||
SetSize(min_size);
|
||||
}
|
||||
};
|
||||
#define DEFINE_CRASHPAD_ANNOTATION(name, len) \
|
||||
static crashpad_annotation<len> g_crashpad_annotation_##name##_buffer(#name);
|
||||
#define SET_CRASHPAD_ANNOTATION_VALUE(name, value) \
|
||||
g_crashpad_annotation_##name##_buffer.set(value);
|
||||
#else
|
||||
#define SET_CRASHPAD_ANNOTATION_VALUE(name, value)
|
||||
#define DEFINE_CRASHPAD_ANNOTATION(name, len)
|
||||
#endif
|
||||
|
||||
DEFINE_CRASHPAD_ANNOTATION(fatal_message, 512);
|
||||
DEFINE_CRASHPAD_ANNOTATION(grid_name, 64);
|
||||
DEFINE_CRASHPAD_ANNOTATION(cpu_string, 128);
|
||||
DEFINE_CRASHPAD_ANNOTATION(startup_state, 32);
|
||||
|
||||
////// Windows-specific includes to the bottom - nasty defines in these pollute the preprocessor
|
||||
//
|
||||
@@ -771,8 +798,18 @@ bool LLAppViewer::init()
|
||||
initCrashReporting();
|
||||
#endif
|
||||
|
||||
writeDebugInfo();
|
||||
|
||||
setupErrorHandling();
|
||||
|
||||
{
|
||||
auto fn = boost::bind<bool>([](const LLSD& stateInfo) -> bool {
|
||||
SET_CRASHPAD_ANNOTATION_VALUE(startup_state, stateInfo["str"].asString());
|
||||
return false;
|
||||
}, _1);
|
||||
LLStartUp::getStateEventPump().listen<::LLEventListener>("LLAppViewer", fn);
|
||||
}
|
||||
|
||||
//
|
||||
// Start of the application
|
||||
//
|
||||
@@ -2744,6 +2781,10 @@ void LLAppViewer::writeDebugInfo(bool isStatic)
|
||||
|
||||
isStatic ? LLSDSerialize::toPrettyXML(gDebugInfo, out_file)
|
||||
: LLSDSerialize::toPrettyXML(gDebugInfo["Dynamic"], out_file);
|
||||
#else
|
||||
SET_CRASHPAD_ANNOTATION_VALUE(fatal_message, gDebugInfo["FatalMessage"].asString());
|
||||
SET_CRASHPAD_ANNOTATION_VALUE(grid_name, gDebugInfo["GridName"].asString());
|
||||
SET_CRASHPAD_ANNOTATION_VALUE(cpu_string, gDebugInfo["CPUInfo"]["CPUString"].asString());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ LLFloaterInspect::LLFloaterInspect(const LLSD&)
|
||||
mDirty(FALSE)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("Inspect.OwnerProfile", boost::bind(&LLFloaterInspect::onClickOwnerProfile, this));
|
||||
mCommitCallbackRegistrar.add("Inspect.LastOwnerProfile", boost::bind(&LLFloaterInspect::onClickLastOwnerProfile, this));
|
||||
mCommitCallbackRegistrar.add("Inspect.CreatorProfile", boost::bind(&LLFloaterInspect::onClickCreatorProfile, this));
|
||||
mCommitCallbackRegistrar.add("Inspect.SelectObject", boost::bind(&LLFloaterInspect::onSelectObject, this));
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inspect.xml");
|
||||
@@ -166,6 +167,36 @@ void LLFloaterInspect::onClickOwnerProfile()
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterInspect::onClickLastOwnerProfile()
|
||||
{
|
||||
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)
|
||||
{
|
||||
const LLUUID& last_owner_id = node->mPermissions->getLastOwner();
|
||||
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.2a) | Modified: RLVa-1.0.0e
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) || gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMETAGS))
|
||||
if (last_owner_id == node->mPermissions->getOwner()) return;
|
||||
// [/RLVa:KB]
|
||||
LLAvatarActions::showProfile(last_owner_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterInspect::onSelectObject()
|
||||
{
|
||||
if(LLFloaterInspect::getSelectedUUID() != LLUUID::null)
|
||||
|
||||
@@ -60,6 +60,7 @@ public:
|
||||
virtual void onFocusReceived();
|
||||
void onClickCreatorProfile();
|
||||
void onClickOwnerProfile();
|
||||
void onClickLastOwnerProfile();
|
||||
void onSelectObject();
|
||||
|
||||
LLScrollListCtrl* mObjectList;
|
||||
|
||||
@@ -148,7 +148,7 @@ S32 LLFloaterNameDesc::getExpectedUploadCost() const
|
||||
LLAssetType::EType asset_type = exten == "wav" ? LLAssetType::AT_SOUND
|
||||
: (exten == "anim" || exten == "bvh") ? LLAssetType::AT_ANIMATION
|
||||
: exten != "lsl" ? LLAssetType::AT_TEXTURE
|
||||
: asset_type = LLAssetType::AT_NONE;
|
||||
: LLAssetType::AT_NONE;
|
||||
S32 upload_cost = -1;
|
||||
|
||||
if (asset_type != LLAssetType::AT_NONE)
|
||||
|
||||
@@ -150,8 +150,9 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject,
|
||||
|
||||
auto links = new LLTextEditor(std::string("group"), LLRect(x, y + 5, RIGHT, bottom), S32_MAX, LLStringUtil::null, nullptr, false, true); // Top adjustment to line up with icon
|
||||
links->setBorderVisible(FALSE);
|
||||
links->setReadOnlyFgColor(text_color);
|
||||
links->setReadOnlyBgColor(LLColor4::transparent);
|
||||
static const auto header_bg_color = gColors.getColor("GroupNotifyHeaderBGColor");
|
||||
if (header_bg_color[VALPHA]) links->setReadOnlyFgColor(text_color);
|
||||
links->setReadOnlyBgColor(header_bg_color);
|
||||
links->setEnabled(false);
|
||||
links->setTakesNonScrollClicks(TRUE);
|
||||
links->setHideScrollbarForShortDocs(TRUE);
|
||||
|
||||
@@ -1842,7 +1842,7 @@ void LLIMProcessing::processNewMessage(const LLUUID& from_id,
|
||||
strings.push_back(from_id.asString());
|
||||
send_generic_message("requestonlinenotification", strings);
|
||||
|
||||
args["NAME"] = name;
|
||||
args["NAME"] = LLAvatarActions::getSLURL(from_id);
|
||||
LLSD payload;
|
||||
payload["from_id"] = from_id;
|
||||
LLAvatarNameCache::get(from_id, boost::bind(¬ification_display_name_callback, _1, _2, "FriendshipAccepted", args, payload));
|
||||
|
||||
@@ -224,7 +224,9 @@ LLNotifyBox::LLNotifyBox(LLNotificationPtr notification)
|
||||
if (!mIsCaution || !mIsTip) // We could do some extra color math here to determine if bg's too close to link color, but let's just cross with the link color instead
|
||||
mText->setLinkColor(new LLColor4(lerp(text_color, gSavedSettings.getColor4("HTMLLinkColor"), 0.4f)));
|
||||
mText->setTabStop(FALSE); // can't tab to it (may be a problem for scrolling via keyboard)
|
||||
mText->appendText(message,false,false,style,!layout_script_dialog); // Now we can set the text, since colors have been set.
|
||||
mText->appendText(message,false,false,style); // Now we can set the text, since colors have been set.
|
||||
if (is_textbox || layout_script_dialog)
|
||||
mText->appendText(notification->getSubstitutions()["SCRIPT_MESSAGE"], false, true, style, false);
|
||||
addChild(mText);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include "lllineeditor.h"
|
||||
#include "llfloaterexperienceprofile.h"
|
||||
#include "llfloaterexperiences.h"
|
||||
//#include "llfloaterreg.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
@@ -62,13 +63,12 @@ const static std::string columnSpace = " ";
|
||||
/* Singu Note: We do not have injectors, so we'll have to call this function instead
|
||||
static LLPanelInjector<LLPanelExperiencePicker> t_panel_status("llpanelexperiencepicker");
|
||||
*/
|
||||
void* create_xp_picker(void* data) { return new LLPanelExperiencePicker(false); }
|
||||
|
||||
LLPanelExperiencePicker::LLPanelExperiencePicker(bool build)
|
||||
LLPanelExperiencePicker::LLPanelExperiencePicker()
|
||||
:LLPanel()
|
||||
{
|
||||
//buildFromFile("panel_experience_search.xml");
|
||||
if (build) LLUICtrlFactory::getInstance()->buildPanel(this, "panel_experience_search.xml"); // Singu Note: Use filename in xml
|
||||
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_experience_search.xml"); // Singu Note: Use filename in xml
|
||||
setDefaultFilters();
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ void LLPanelExperiencePicker::onBtnSelect()
|
||||
|
||||
void LLPanelExperiencePicker::onBtnClose()
|
||||
{
|
||||
LLFloater* floater = static_cast<LLFloater*>(getParent());
|
||||
LLFloater* floater = mSelectionCallback ? static_cast<LLFloater*>(getParent()) : LLFloaterExperiences::findInstance();
|
||||
if (floater)
|
||||
{
|
||||
floater->close();
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
class LLScrollListCtrl;
|
||||
class LLLineEditor;
|
||||
|
||||
void* create_xp_picker(void* data);
|
||||
class LLPanelExperiencePicker final : public LLPanel
|
||||
{
|
||||
public:
|
||||
@@ -44,7 +43,7 @@ public:
|
||||
typedef std::function<bool (const LLSD&)> filter_function;
|
||||
typedef std::vector<filter_function> filter_list;
|
||||
|
||||
LLPanelExperiencePicker(bool build = true);
|
||||
LLPanelExperiencePicker();
|
||||
virtual ~LLPanelExperiencePicker();
|
||||
|
||||
BOOL postBuild() override;
|
||||
|
||||
@@ -70,6 +70,7 @@ static U32 sZombieGroups = 0;
|
||||
U32 LLSpatialGroup::sNodeCount = 0;
|
||||
|
||||
U32 gOctreeMaxCapacity;
|
||||
float gOctreeMinSize;
|
||||
U32 gOctreeReserveCapacity;
|
||||
|
||||
BOOL LLSpatialGroup::sNoDelete = FALSE;
|
||||
@@ -1623,10 +1624,10 @@ void renderOctree(LLSpatialGroup* group)
|
||||
gGL.diffuseColor4fv(col.mV);
|
||||
LLVector4a fudge;
|
||||
fudge.splat(0.001f);
|
||||
const LLVector4a* bounds = group->getObjectBounds();
|
||||
LLVector4a size = bounds[1];
|
||||
size.mul(1.01f);
|
||||
size.add(fudge);
|
||||
//const LLVector4a* bounds = group->getObjectBounds();
|
||||
//LLVector4a size = bounds[1];
|
||||
//size.mul(1.01f);
|
||||
//size.add(fudge);*/
|
||||
|
||||
//{
|
||||
// LLGLDepthTest depth(GL_TRUE, GL_FALSE);
|
||||
|
||||
@@ -139,6 +139,7 @@ public:
|
||||
static bool startLLProxy(); // Initialize the SOCKS 5 proxy
|
||||
|
||||
static LLViewerStats::PhaseMap& getPhases() { return *sPhases; }
|
||||
static LLEventPump& getStateEventPump() { return *sStateWatcher; }
|
||||
private:
|
||||
static LLSLURL sStartSLURL;
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include "llglheaders.h"
|
||||
#include "lldrawpoolterrain.h"
|
||||
#include "lldrawable.h"
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
extern LLPipeline gPipeline;
|
||||
extern bool gShiftFrame;
|
||||
@@ -371,6 +372,14 @@ void LLSurface::connectNeighbor(LLSurface* neighborp, U32 direction)
|
||||
// - Non-power-of-2 regions should work here, but the rest of the viewer code will probably choke on them.
|
||||
|
||||
surface_patch_ref patchp, neighbor_patchp;
|
||||
if (mNeighbors[direction] == neighborp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (mNeighbors[direction])
|
||||
{
|
||||
mNeighbors[direction]->disconnectNeighbor(this, gDirOpposite[direction]);
|
||||
}
|
||||
mNeighbors[direction] = neighborp;
|
||||
|
||||
const S32 max_idx = mPatchesPerEdge - 1;
|
||||
@@ -480,33 +489,71 @@ void LLSurface::connectNeighbor(LLSurface* neighborp, U32 direction)
|
||||
}
|
||||
}
|
||||
|
||||
void LLSurface::disconnectNeighbor(LLSurface *surfacep)
|
||||
void LLSurface::disconnectNeighbor(LLSurface* surfacep, U32 direction)
|
||||
{
|
||||
S32 i;
|
||||
for (i = 0; i < 8; i++)
|
||||
if (surfacep && surfacep == mNeighbors[direction])
|
||||
{
|
||||
if (surfacep == mNeighbors[i])
|
||||
// Iterate through surface patches, removing any connectivity to removed surface.
|
||||
// Extra branches for debugging.
|
||||
if (!gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||
{
|
||||
mNeighbors[i] = NULL;
|
||||
for (auto& patchp : mPatchList)
|
||||
{
|
||||
patchp->disconnectNeighbor(surfacep);
|
||||
}
|
||||
}
|
||||
if (gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||
{
|
||||
for (auto& patchp : mPatchList)
|
||||
{
|
||||
patchp->disconnectNeighbor(surfacep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Iterate through surface patches, removing any connectivity to removed surface.
|
||||
for (auto& patchp : mPatchList)
|
||||
{
|
||||
patchp->disconnectNeighbor(surfacep);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLSurface::disconnectAllNeighbors()
|
||||
{
|
||||
// Pulled out of loop to debug.
|
||||
if (mNeighbors[EAST])
|
||||
{
|
||||
mNeighbors[EAST]->disconnectNeighbor(this, gDirOpposite[EAST]);
|
||||
}
|
||||
if (mNeighbors[NORTH])
|
||||
{
|
||||
mNeighbors[NORTH]->disconnectNeighbor(this, gDirOpposite[NORTH]);
|
||||
}
|
||||
if (mNeighbors[WEST])
|
||||
{
|
||||
mNeighbors[WEST]->disconnectNeighbor(this, gDirOpposite[WEST]);
|
||||
}
|
||||
if (mNeighbors[SOUTH])
|
||||
{
|
||||
mNeighbors[SOUTH]->disconnectNeighbor(this, gDirOpposite[SOUTH]);
|
||||
}
|
||||
if (mNeighbors[NORTHEAST])
|
||||
{
|
||||
mNeighbors[NORTHEAST]->disconnectNeighbor(this, gDirOpposite[NORTHEAST]);
|
||||
}
|
||||
if (mNeighbors[NORTHWEST])
|
||||
{
|
||||
mNeighbors[NORTHWEST]->disconnectNeighbor(this, gDirOpposite[NORTHWEST]);
|
||||
}
|
||||
if (mNeighbors[SOUTHWEST])
|
||||
{
|
||||
mNeighbors[SOUTHWEST]->disconnectNeighbor(this, gDirOpposite[SOUTHWEST]);
|
||||
}
|
||||
if (mNeighbors[SOUTHEAST])
|
||||
{
|
||||
mNeighbors[SOUTHEAST]->disconnectNeighbor(this, gDirOpposite[SOUTHEAST]);
|
||||
}
|
||||
S32 i;
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (mNeighbors[i])
|
||||
{
|
||||
mNeighbors[i]->disconnectNeighbor(this);
|
||||
//mNeighbors[i]->disconnectNeighbor(this);
|
||||
mNeighbors[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
void setOriginGlobal(const LLVector3d &origin_global);
|
||||
|
||||
void connectNeighbor(LLSurface *neighborp, U32 direction);
|
||||
void disconnectNeighbor(LLSurface *neighborp);
|
||||
void disconnectNeighbor(LLSurface *neighborp, U32 direction);
|
||||
void disconnectAllNeighbors();
|
||||
|
||||
// <FS:CR> Aurora Sim
|
||||
|
||||
@@ -454,6 +454,7 @@ static bool handleRepartition(const LLSD&)
|
||||
if (gPipeline.isInit())
|
||||
{
|
||||
gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
|
||||
gOctreeMinSize = gSavedSettings.getF32("OctreeMinimumNodeSize");
|
||||
gOctreeReserveCapacity = llmin(gSavedSettings.getU32("OctreeReserveNodeCapacity"),U32(512));
|
||||
gObjectList.repartitionObjects();
|
||||
}
|
||||
@@ -692,6 +693,7 @@ void settings_setup_listeners()
|
||||
gSavedSettings.getControl("OctreeStaticObjectSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
gSavedSettings.getControl("OctreeDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
gSavedSettings.getControl("OctreeMaxNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
gSavedSettings.getControl("OctreeMinimumNodeSize")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
gSavedSettings.getControl("OctreeReserveNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
gSavedSettings.getControl("OctreeAlphaDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
gSavedSettings.getControl("OctreeAttachmentSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
|
||||
|
||||
@@ -7020,7 +7020,8 @@ void process_script_dialog(LLMessageSystem* msg, void**)
|
||||
|
||||
LLSD args;
|
||||
args["TITLE"] = object_name;
|
||||
args["MESSAGE"] = message;
|
||||
args["MESSAGE"] = LLStringUtil::null;
|
||||
args["SCRIPT_MESSAGE"] = message;
|
||||
args["CHANNEL"] = chat_channel;
|
||||
LLNotificationPtr notification;
|
||||
char const* name = (is_group && !is_text_box) ? "GROUPNAME" : "NAME";
|
||||
|
||||
@@ -1033,7 +1033,7 @@ BOOL LLOcclusionCullingGroup::earlyFail(LLCamera* camera, const LLVector4a* boun
|
||||
LLVector4a fudge(vel*2.f);
|
||||
|
||||
const LLVector4a& c = bounds[0];
|
||||
static LLVector4a r;
|
||||
LLVector4a r;
|
||||
r.setAdd(bounds[1], fudge);
|
||||
|
||||
/*if (r.magVecSquared() > 1024.0*1024.0)
|
||||
@@ -1242,6 +1242,11 @@ void LLOcclusionCullingGroup::doOcclusion(LLCamera* camera, const LLVector4a* sh
|
||||
//static LLVector4a fudge(SG_OCCLUSION_FUDGE);
|
||||
static LLCachedControl<F32> vel("SHOcclusionFudge",SG_OCCLUSION_FUDGE);
|
||||
LLVector4a fudge(SG_OCCLUSION_FUDGE);
|
||||
if (LLDrawPool::POOL_WATER == mSpatialPartition->mDrawableType)
|
||||
{
|
||||
fudge.getF32ptr()[2] = 1.f;
|
||||
}
|
||||
|
||||
static LLVector4a fudged_bounds;
|
||||
fudged_bounds.setAdd(fudge, bounds[1]);
|
||||
shader->uniform3fv(LLShaderMgr::BOX_SIZE, 1, fudged_bounds.getF32ptr());
|
||||
|
||||
@@ -958,6 +958,7 @@ void LLPipeline::refreshCachedSettings()
|
||||
LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
|
||||
//LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
|
||||
gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
|
||||
gOctreeMinSize = gSavedSettings.getF32("OctreeMinimumNodeSize");
|
||||
gOctreeReserveCapacity = llmin(gSavedSettings.getU32("OctreeReserveNodeCapacity"), U32(512));
|
||||
LLPipeline::sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
|
||||
LLPipeline::sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="66, 66, 66, 255" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="255, 255, 255, 128" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255"/> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255"/> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="66, 66, 66, 255"/>
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="200, 200, 200, 255"/>
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -100,6 +100,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="189, 0, 0, 240" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="1, 0, 0, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="70, 170, 255, 255" />
|
||||
<GroupNotifyHeaderBGColor value="255, 255, 255, 184" />
|
||||
<GroupNotifyTextColor value="0, 30, 60, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
height="530"
|
||||
left="0"
|
||||
name="xp_scroll"
|
||||
opaque="true"
|
||||
bottom="0"
|
||||
width="348">
|
||||
<panel
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true"
|
||||
min_height="300" min_width="400" name="inspect"
|
||||
min_height="300" min_width="480" name="inspect"
|
||||
rect_control="FloaterInspectRect" title="Inspect Objects">
|
||||
<scroll_list bottom="30" can_resize="false" column_padding="0" draw_heading="true"
|
||||
follows="top|right|left|bottom" left="10" multi_select="false"
|
||||
@@ -22,12 +22,19 @@
|
||||
<button bottom="5" follows="left|bottom" font="SansSerif" halign="center" height="20"
|
||||
label="See Owner Profile..." label_selected="" left="10"
|
||||
mouse_opaque="true" name="button owner"
|
||||
tool_tip="See profile of the highlighted object's owner" width="150" >
|
||||
tool_tip="See profile of the highlighted object's owner" width="152" >
|
||||
<button.commit_callback
|
||||
function="Inspect.OwnerProfile" />
|
||||
</button>
|
||||
<button bottom="5" follows="left|bottom" font="SansSerif" halign="center" height="20"
|
||||
label="See Creator Profile..." label_selected="" left="170"
|
||||
label="See Last Owner Profile..." label_selected="" left_delta="154"
|
||||
mouse_opaque="true" name="button last owner"
|
||||
tool_tip="See profile of the highlighted object's last owner" width="152" >
|
||||
<button.commit_callback
|
||||
function="Inspect.LastOwnerProfile" />
|
||||
</button>
|
||||
<button bottom="5" follows="left|bottom" font="SansSerif" halign="center" height="20"
|
||||
label="See Creator Profile..." label_selected="" left_delta="154"
|
||||
mouse_opaque="true" name="button creator"
|
||||
tool_tip="See profile of the highlighted object's original creator"
|
||||
width="150" >
|
||||
|
||||
@@ -7862,7 +7862,7 @@ Offer a teleport?
|
||||
icon="notify.tga"
|
||||
name="FriendshipAccepted"
|
||||
log_to_im="true"
|
||||
type="notify">
|
||||
type="notifytip">
|
||||
<tag>friendship</tag>
|
||||
[NAME] accepted your friendship offer.
|
||||
</notification>
|
||||
@@ -7872,7 +7872,7 @@ Offer a teleport?
|
||||
name="FriendshipDeclined"
|
||||
log_to_im="true"
|
||||
persist="true"
|
||||
type="notify">
|
||||
type="notifytip">
|
||||
<tag>friendship</tag>
|
||||
[NAME] declined your friendship offer.
|
||||
</notification>
|
||||
|
||||
@@ -3609,6 +3609,7 @@ If you continue to receive this message, please contact Second Life support for
|
||||
<string name="Debits">Debits</string>
|
||||
<string name="Total">Total</string>
|
||||
<string name="NoGroupDataFound">No group data found for group </string>
|
||||
<string name="AlreadyInGroup">You are already in this group </string>
|
||||
|
||||
<!-- floater IM bonus_info: When a Linden with Admin/god status receives a new IM this displays the estate (Mainland vs. teen grid) of the source avatar.
|
||||
This is to help Lindens when answering questions. -->
|
||||
|
||||
@@ -3386,11 +3386,11 @@ L'objet [OBJECTFROMNAME] appartenant à un utilisateur inconnu vous a donné un(
|
||||
</notification>
|
||||
|
||||
<notification name="FriendshipAccepted">
|
||||
[NAME_SLURL] a accepté votre amitié. [MESSAGE]
|
||||
[NAME] a accepté votre amitié.
|
||||
</notification>
|
||||
|
||||
<notification name="FriendshipDeclined">
|
||||
[NAME_SLURL] a refusé votre amitié. [MESSAGE]
|
||||
[NAME] a refusé votre amitié.
|
||||
</notification>
|
||||
|
||||
<notification name="OfferCallingCard">
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
<NotifyCautionBoxColor value="0, 0, 0, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="169, 216, 175, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="0, 0, 0, 255" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="169, 216, 175, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="66, 66, 66, 255" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="255, 255, 255, 128" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="189, 0, 0, 240" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="1, 0, 0, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="189, 0, 0, 240" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="1, 0, 0, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<NotifyCautionBoxColor value="210, 210, 210, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="210, 210, 210, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="255, 255, 255, 255" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="0, 0, 0, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
<NotifyCautionBoxColor value="210, 210, 210, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="210, 210, 210, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="255, 255, 255, 255" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="0, 0, 0, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<NotifyCautionBoxColor value="254, 209, 118, 255" /> <!-- the background color of caution permissions prompts -->
|
||||
<NotifyCautionWarnColor value="0, 0, 0, 255" /> <!-- the foreground color of the special title text in caution permissions prompts -->
|
||||
<GroupNotifyBoxColor value="70, 70, 70, 255" />
|
||||
<GroupNotifyHeaderBGColor value="0, 0, 0, 0" />
|
||||
<GroupNotifyTextColor value="0, 30, 60, 255" />
|
||||
|
||||
<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
|
||||
|
||||
@@ -1147,13 +1147,13 @@ class LinuxManifest(ViewerManifest):
|
||||
|
||||
def is_packaging_viewer(self):
|
||||
super(LinuxManifest, self).is_packaging_viewer()
|
||||
return True # We always want a packaged viewer even without archive.
|
||||
return 'package' in self.args['actions']
|
||||
|
||||
|
||||
def do(self, *actions):
|
||||
super(LinuxManifest, self).do(*actions)
|
||||
if not 'package' in self.actions:
|
||||
self.package_finish() # Always finish the package.
|
||||
else:
|
||||
self.package_finish() # Always finish the package.
|
||||
if 'package' in self.actions:
|
||||
# package_finish() was called by super.do() so just create the TAR.
|
||||
self.create_archive()
|
||||
return self.file_list
|
||||
|
||||
Reference in New Issue
Block a user