Merge branch 'DRTVWR-587-maint-V' of https://github.com/secondlife/viewer
# Conflicts: # indra/cmake/Python.cmake # indra/newview/llvovolume.cppmaster
commit
ff5645511e
|
|
@ -3195,11 +3195,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6ba629ff34c4b14a1f851de707bc35041df8b6a9</string>
|
||||
<string>6db9317ed29ccb00c2f75758f4aa2d4cd8784f46</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/viewer-manager/releases/download/v3.0-bd3aec2/viewer_manager-3.0-bd3aec2-darwin64-bd3aec2.tar.zst</string>
|
||||
<string>https://github.com/secondlife/viewer-manager/releases/download/v3.0-83fb46a/viewer_manager-3.0-83fb46a-darwin64-83fb46a.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -3209,11 +3209,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>7e086a28db17b0c086a5460e9d62f0c6584560b3</string>
|
||||
<string>426d3b30681b747056027ca21136ae56b188cd47</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/viewer-manager/releases/download/v3.0-bd3aec2/viewer_manager-3.0-bd3aec2-linux64-bd3aec2.tar.zst</string>
|
||||
<string>https://github.com/secondlife/viewer-manager/releases/download/v3.0-83fb46a/viewer_manager-3.0-83fb46a-linux64-83fb46a.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -3223,11 +3223,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>1eab994c0c1df5b2c057878a4071a88320cec978</string>
|
||||
<string>fe8e9ee00f53f11a7417a7bcf1db069e25dace5d</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/viewer-manager/releases/download/v3.0-bd3aec2/viewer_manager-3.0-bd3aec2-windows64-bd3aec2.tar.zst</string>
|
||||
<string>https://github.com/secondlife/viewer-manager/releases/download/v3.0-83fb46a/viewer_manager-3.0-83fb46a-windows64-83fb46a.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -3238,7 +3238,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>source_type</key>
|
||||
<string>hg</string>
|
||||
<key>version</key>
|
||||
<string>3.0-bd3aec2</string>
|
||||
<string>3.0-83fb46a</string>
|
||||
</map>
|
||||
<key>vlc-bin</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -240,6 +240,7 @@ Ansariel Hiller
|
|||
SL-15398
|
||||
SL-18432
|
||||
SL-4126
|
||||
SL-20224
|
||||
Aralara Rajal
|
||||
Arare Chantilly
|
||||
CHUIBUG-191
|
||||
|
|
|
|||
|
|
@ -7,61 +7,20 @@ if (DEFINED ENV{PYTHON})
|
|||
set(python "$ENV{PYTHON}")
|
||||
set(PYTHONINTERP_FOUND ON)
|
||||
elseif (WINDOWS)
|
||||
# On Windows, explicitly avoid Cygwin Python.
|
||||
|
||||
if (DEFINED ENV{VIRTUAL_ENV})
|
||||
find_program(PYTHON_EXECUTABLE
|
||||
NAMES python.exe
|
||||
PATHS
|
||||
"$ENV{VIRTUAL_ENV}\\scripts"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
else()
|
||||
# if the user has their own version of Python installed, prefer that
|
||||
foreach(hive HKEY_CURRENT_USER HKEY_LOCAL_MACHINE)
|
||||
# prefer more recent Python versions to older ones, if multiple versions
|
||||
# are installed
|
||||
foreach(pyver 3.11 3.10 3.9)
|
||||
list(APPEND regpaths "[${hive}\\SOFTWARE\\Python\\PythonCore\\${pyver}\\InstallPath]")
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
# TODO: This logic has the disadvantage that if you have multiple versions
|
||||
# of Python installed, the selected path won't necessarily be the newest -
|
||||
# e.g. this GLOB will prefer Python310 to Python311. But since pymaybe is
|
||||
# checked AFTER the registry entries, this will only surface as a problem if
|
||||
# no installed Python appears in the registry.
|
||||
file(GLOB pymaybe
|
||||
"$ENV{PROGRAMFILES}/Python*"
|
||||
## "$ENV{PROGRAMFILES(X86)}/Python*"
|
||||
# The Windows environment variable is in fact as shown above, but CMake
|
||||
# disallows querying an environment variable containing parentheses -
|
||||
# thanks, Windows. Fudge by just appending " (x86)" to $PROGRAMFILES and
|
||||
# hoping for the best.
|
||||
"$ENV{PROGRAMFILES} (x86)/Python*"
|
||||
"c:/Python*")
|
||||
|
||||
set(Python3_FIND_REGISTRY "LAST")
|
||||
find_program(python
|
||||
NAMES python3.exe python.exe
|
||||
NO_DEFAULT_PATH # added so that cmake does not find cygwin python
|
||||
PATHS
|
||||
${regpaths}
|
||||
${pymaybe}
|
||||
)
|
||||
set(Python3_FIND_VIRTUALENV "ONLY")
|
||||
endif()
|
||||
find_package(Python3 COMPONENTS Interpreter)
|
||||
set(python ${Python3_EXECUTABLE})
|
||||
else()
|
||||
find_program(python python3)
|
||||
|
||||
if (python)
|
||||
set(PYTHONINTERP_FOUND ON)
|
||||
endif (python)
|
||||
endif (DEFINED ENV{PYTHON})
|
||||
|
||||
if (NOT python)
|
||||
if (python)
|
||||
set(PYTHONINTERP_FOUND ON)
|
||||
else()
|
||||
message(FATAL_ERROR "No Python interpreter found")
|
||||
endif (NOT python)
|
||||
endif (python)
|
||||
|
||||
set(PYTHON_EXECUTABLE "${python}" CACHE FILEPATH "Python interpreter for builds")
|
||||
mark_as_advanced(PYTHON_EXECUTABLE)
|
||||
|
|
|
|||
|
|
@ -1723,7 +1723,13 @@ S32 LLTextBase::getLeftOffset(S32 width)
|
|||
case LLFontGL::HCENTER:
|
||||
return mHPad + llmax(0, (mVisibleTextRect.getWidth() - width - mHPad) / 2);
|
||||
case LLFontGL::RIGHT:
|
||||
return mVisibleTextRect.getWidth() - width;
|
||||
{
|
||||
// Font's rendering rounds string size, if value gets rounded
|
||||
// down last symbol might not have enough space to render,
|
||||
// compensate by adding an extra pixel as padding
|
||||
const S32 right_padding = 1;
|
||||
return llmax(mHPad, mVisibleTextRect.getWidth() - width - right_padding);
|
||||
}
|
||||
default:
|
||||
return mHPad;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2140,15 +2140,21 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
|
||||
// Don't let camera go underground
|
||||
F32 camera_min_off_ground = getCameraMinOffGround();
|
||||
|
||||
camera_land_height = LLWorld::getInstance()->resolveLandHeightGlobal(camera_position_global);
|
||||
|
||||
if (camera_position_global.mdV[VZ] < camera_land_height + camera_min_off_ground)
|
||||
F32 minZ = llmax(F_ALMOST_ZERO, camera_land_height + camera_min_off_ground);
|
||||
if (camera_position_global.mdV[VZ] < minZ)
|
||||
{
|
||||
camera_position_global.mdV[VZ] = camera_land_height + camera_min_off_ground;
|
||||
camera_position_global.mdV[VZ] = minZ;
|
||||
isConstrained = TRUE;
|
||||
}
|
||||
|
||||
// Don't let camera go abovesky
|
||||
F32 maxZ = LLWorld::getInstance()->getRegionMaxHeight() * 0.25 - F_ALMOST_ZERO;
|
||||
if (camera_position_global.mdV[VZ] > maxZ)
|
||||
{
|
||||
camera_position_global.mdV[VZ] = maxZ;
|
||||
isConstrained = TRUE;
|
||||
}
|
||||
|
||||
if (hit_limit)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -129,10 +129,27 @@ static const F32 ZOOM_MAX = 128.f;
|
|||
class LLWorldMapHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
LLWorldMapHandler() : LLCommandHandler("worldmap", UNTRUSTED_CLICK_ONLY ) { }
|
||||
|
||||
bool handle(const LLSD& params,
|
||||
LLWorldMapHandler() : LLCommandHandler("worldmap", UNTRUSTED_THROTTLE)
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool canHandleUntrusted(
|
||||
const LLSD& params,
|
||||
const LLSD& query_map,
|
||||
LLMediaCtrl* web,
|
||||
const std::string& nav_type)
|
||||
{
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
// NAV_TYPE_EXTERNAL will be throttled
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool handle(const LLSD& params,
|
||||
const LLSD& query_map,
|
||||
const std::string& grid,
|
||||
LLMediaCtrl* web)
|
||||
|
|
@ -175,12 +192,32 @@ LLWorldMapHandler gWorldMapHandler;
|
|||
class LLMapTrackAvatarHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
LLMapTrackAvatarHandler() : LLCommandHandler("maptrackavatar", UNTRUSTED_CLICK_ONLY)
|
||||
LLMapTrackAvatarHandler() : LLCommandHandler("maptrackavatar", UNTRUSTED_THROTTLE)
|
||||
{
|
||||
}
|
||||
|
||||
bool handle(const LLSD& params,
|
||||
|
||||
virtual bool canHandleUntrusted(
|
||||
const LLSD& params,
|
||||
const LLSD& query_map,
|
||||
LLMediaCtrl* web,
|
||||
const std::string& nav_type)
|
||||
{
|
||||
if (params.size() < 1)
|
||||
{
|
||||
return true; // don't block, will fail later
|
||||
}
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
// NAV_TYPE_EXTERNAL will be throttled
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool handle(const LLSD& params,
|
||||
const LLSD& query_map,
|
||||
const std::string& grid,
|
||||
LLMediaCtrl* web)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ public:
|
|||
return true; // don't block, will fail later
|
||||
}
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED)
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -524,7 +524,8 @@ public:
|
|||
return true; // don't block, will fail later
|
||||
}
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED)
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,8 @@ public:
|
|||
return true; // don't block, will fail later
|
||||
}
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED)
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,8 @@ public:
|
|||
return true; // don't block, will fail later
|
||||
}
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED)
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -246,7 +246,11 @@ public:
|
|||
|
||||
std::string fl_name = params[0].asString();
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED)
|
||||
// External browsers explicitly ask user about opening links
|
||||
// so treat "external" same as "clicked" in this case,
|
||||
// despite it being treated as untrusted.
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
const std::list<std::string> blacklist_clicked = {
|
||||
"camera_presets",
|
||||
|
|
|
|||
|
|
@ -234,9 +234,29 @@ LLLocalizedInventoryItemsDictionary::LLLocalizedInventoryItemsDictionary()
|
|||
class LLInventoryHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
LLInventoryHandler() : LLCommandHandler("inventory", UNTRUSTED_CLICK_ONLY) { }
|
||||
|
||||
LLInventoryHandler() : LLCommandHandler("inventory", UNTRUSTED_THROTTLE) { }
|
||||
|
||||
virtual bool canHandleUntrusted(
|
||||
const LLSD& params,
|
||||
const LLSD& query_map,
|
||||
LLMediaCtrl* web,
|
||||
const std::string& nav_type)
|
||||
{
|
||||
if (params.size() < 1)
|
||||
{
|
||||
return true; // don't block, will fail later
|
||||
}
|
||||
|
||||
if (nav_type == NAV_TYPE_CLICKED
|
||||
|| nav_type == NAV_TYPE_EXTERNAL)
|
||||
{
|
||||
// NAV_TYPE_EXTERNAL will be throttled
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool handle(const LLSD& params,
|
||||
const LLSD& query_map,
|
||||
const std::string& grid,
|
||||
|
|
|
|||
|
|
@ -5373,8 +5373,6 @@ void LLControlAVBridge::updateSpatialExtents()
|
|||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
|
||||
LLControlAvatar* controlAvatar = getVObj()->getControlAvatar();
|
||||
|
||||
LLSpatialGroup* root = (LLSpatialGroup*)mOctree->getListener(0);
|
||||
|
||||
bool rootWasDirty = root->isDirty();
|
||||
|
|
@ -5385,10 +5383,11 @@ void LLControlAVBridge::updateSpatialExtents()
|
|||
// disappear when root goes off-screen"
|
||||
//
|
||||
// Expand extents to include Control Avatar placed outside of the bounds
|
||||
// <FS:Beq> mDrawable crash reported by Aleric Inglewood
|
||||
// if (controlAvatar && (rootWasDirty || controlAvatar->mPlaying))
|
||||
if (controlAvatar && controlAvatar->mDrawable.notNull() && (rootWasDirty || controlAvatar->mPlaying))
|
||||
// </FS:Beq>
|
||||
LLControlAvatar* controlAvatar = getVObj() ? getVObj()->getControlAvatar() : NULL;
|
||||
if (controlAvatar
|
||||
&& controlAvatar->mDrawable
|
||||
&& controlAvatar->mDrawable->getEntry()
|
||||
&& (rootWasDirty || controlAvatar->mPlaying))
|
||||
{
|
||||
root->expandExtents(controlAvatar->mDrawable->getSpatialExtents(), *mDrawable->getXform());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="24"
|
||||
width="52"
|
||||
width="53"
|
||||
left_delta="2"
|
||||
top_pad="1"
|
||||
halign="right"
|
||||
|
|
@ -279,7 +279,7 @@
|
|||
follows="left|top"
|
||||
enabled="false"
|
||||
top_delta="3"
|
||||
left_pad="21"
|
||||
left_pad="20"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_alt1"
|
||||
|
|
@ -313,7 +313,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="24"
|
||||
width="52"
|
||||
width="53"
|
||||
left_delta="2"
|
||||
top_pad="1"
|
||||
halign="right"
|
||||
|
|
@ -325,7 +325,7 @@
|
|||
follows="left|top"
|
||||
enabled="false"
|
||||
top_delta="3"
|
||||
left_pad="21"
|
||||
left_pad="20"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_alt2"
|
||||
|
|
@ -359,7 +359,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="25"
|
||||
width="52"
|
||||
width="53"
|
||||
left_delta="2"
|
||||
top_pad="1"
|
||||
halign="right"
|
||||
|
|
@ -371,7 +371,7 @@
|
|||
follows="left|top"
|
||||
enabled="false"
|
||||
top_delta="3"
|
||||
left_pad="21"
|
||||
left_pad="20"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_alt3"
|
||||
|
|
@ -469,7 +469,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="12"
|
||||
width="52"
|
||||
width="53"
|
||||
left_delta="2"
|
||||
top_pad="2"
|
||||
halign="right"
|
||||
|
|
@ -486,7 +486,7 @@
|
|||
mouse_opaque="false"
|
||||
visible="true"
|
||||
top_delta="-3"
|
||||
left_pad="2"/>
|
||||
left_pad="1"/>
|
||||
<line_editor
|
||||
follows="left|top"
|
||||
enabled="false"
|
||||
|
|
@ -525,7 +525,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="12"
|
||||
width="52"
|
||||
width="53"
|
||||
left_delta="2"
|
||||
top_pad="2"
|
||||
halign="right"
|
||||
|
|
@ -542,7 +542,7 @@
|
|||
mouse_opaque="false"
|
||||
visible="true"
|
||||
top_delta="-3"
|
||||
left_pad="2"/>
|
||||
left_pad="1"/>
|
||||
<line_editor
|
||||
follows="left|top"
|
||||
enabled="false"
|
||||
|
|
|
|||
Loading…
Reference in New Issue