diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 48cbc704de..caedd7f375 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -384,7 +384,7 @@ jobs: FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }} elif [[ "${{github.event_name }}" == "workflow_dispatch" ]]; then FS_RELEASE_FOLDER=test - FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }} + FS_BUILD_WEBHOOK_URL=${{ secrets.MANUAL_WEBHOOK_URL }} else FS_RELEASE_TYPE=Unknown fi diff --git a/indra/media_plugins/cef/linux_volume_catcher.cpp b/indra/media_plugins/cef/linux_volume_catcher.cpp index bc1fb38af0..b7dbb02f2c 100755 --- a/indra/media_plugins/cef/linux_volume_catcher.cpp +++ b/indra/media_plugins/cef/linux_volume_catcher.cpp @@ -399,7 +399,13 @@ void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info if (0 == eol) { pa_proplist *proplist = sii->proplist; - pid_t sinkpid = atoll(llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID)); + const char* str = llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID); + if (!str) + { + return; + } + + pid_t sinkpid = atoll(str); if (isPluginPid( sinkpid )) // does the discovered sinkinput belong to this process? { diff --git a/indra/newview/fonts/fonts.xml b/indra/newview/fonts/fonts.xml index e3a0b1f3e8..2f3b1193d2 100644 --- a/indra/newview/fonts/fonts.xml +++ b/indra/newview/fonts/fonts.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_cascadia_code.xml b/indra/newview/fonts/fonts_cascadia_code.xml index 895cf7eabb..bd1c88a3d3 100644 --- a/indra/newview/fonts/fonts_cascadia_code.xml +++ b/indra/newview/fonts/fonts_cascadia_code.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_celestia_medium_redux.xml b/indra/newview/fonts/fonts_celestia_medium_redux.xml index 6b28aee211..a84a3c1a26 100644 --- a/indra/newview/fonts/fonts_celestia_medium_redux.xml +++ b/indra/newview/fonts/fonts_celestia_medium_redux.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_deja_vu_all_caps.xml b/indra/newview/fonts/fonts_deja_vu_all_caps.xml index 8780cc6262..9006bc17ec 100644 --- a/indra/newview/fonts/fonts_deja_vu_all_caps.xml +++ b/indra/newview/fonts/fonts_deja_vu_all_caps.xml @@ -7,17 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_droid.xml b/indra/newview/fonts/fonts_droid.xml index 5e575b984f..7807020928 100644 --- a/indra/newview/fonts/fonts_droid.xml +++ b/indra/newview/fonts/fonts_droid.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_dyslexia.xml b/indra/newview/fonts/fonts_dyslexia.xml index b41fdc1306..2a61b01fca 100644 --- a/indra/newview/fonts/fonts_dyslexia.xml +++ b/indra/newview/fonts/fonts_dyslexia.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_liberation.xml b/indra/newview/fonts/fonts_liberation.xml index 0261b75696..92f3678e23 100644 --- a/indra/newview/fonts/fonts_liberation.xml +++ b/indra/newview/fonts/fonts_liberation.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_mobi.xml b/indra/newview/fonts/fonts_mobi.xml index d9f6db65f9..376156d537 100644 --- a/indra/newview/fonts/fonts_mobi.xml +++ b/indra/newview/fonts/fonts_mobi.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_noto.xml b/indra/newview/fonts/fonts_noto.xml index d57a8c209c..9378473d66 100644 --- a/indra/newview/fonts/fonts_noto.xml +++ b/indra/newview/fonts/fonts_noto.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_roboto.xml b/indra/newview/fonts/fonts_roboto.xml index 18fad6b060..a08a25c7f3 100644 --- a/indra/newview/fonts/fonts_roboto.xml +++ b/indra/newview/fonts/fonts_roboto.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fonts/fonts_ubuntu.xml b/indra/newview/fonts/fonts_ubuntu.xml index 08d6051436..d98048f0bb 100644 --- a/indra/newview/fonts/fonts_ubuntu.xml +++ b/indra/newview/fonts/fonts_ubuntu.xml @@ -7,18 +7,14 @@ NotoEmoji-Regular.ttf meiryo.TTC - YuGothR.ttc MSGOTHIC.TTC gulim.ttc simhei.ttf ArialUni.ttf msyh.ttc - seguisym.ttf - nirmala.ttf - tahoma.ttf Cambria.ttc - micross.ttf malgun.ttf + micross.ttf ヒラギノ角ゴシック W3.ttc diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index aeecbe4734..fe3bf53fdf 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -1659,6 +1659,80 @@ bool FSPanelAreaSearchList::onContextMenuItemEnable(const LLSD& userdata) } } +bool FSPanelAreaSearchList::onContextMenuItemVisibleRLV(const LLSD& userdata) +{ + if (!RlvActions::isRlvEnabled()) + { + return true; + } + + if (RlvActions::hasBehaviour(RLV_BHVR_INTERACT)) + { + return false; + } + + const std::string& parameter = userdata.asStringRef(); + std::vector behavs; + LLStringUtil::getTokens(parameter, behavs, "|"); + + if (std::find(behavs.begin(), behavs.end(), "delete") != behavs.end()) + { + if (!rlvCanDeleteOrReturn()) + { + return false; + } + } + + std::vector selected = mResultList->getAllSelected(); + for (const auto item : selected) + { + const LLUUID& object_id = item->getUUID(); + LLViewerObject* objectp = gObjectList.findObject(object_id); + if (!objectp) + { + return false; + } + + if ( + std::find(behavs.begin(), behavs.end(), "touch") != behavs.end() + && !RlvActions::canTouch(objectp) + ) + { + return false; + } + else if ( + std::find(behavs.begin(), behavs.end(), "edit") != behavs.end() + && !RlvActions::canEdit(objectp) + ) + { + return false; + } + else if ( + std::find(behavs.begin(), behavs.end(), "sit") != behavs.end() + && !RlvActions::canSit(objectp) + ) + { + return false; + } + else if ( + std::find(behavs.begin(), behavs.end(), "buy") != behavs.end() + && !RlvActions::canBuyObject(object_id) + ) + { + return false; + } + else if ( + std::find(behavs.begin(), behavs.end(), "teleport") != behavs.end() + && !RlvActions::canTeleportToLocal(objectp->getPositionGlobal()) + ) + { + return false; + } + } + + return true; +} + bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata) { const std::string& action = userdata.asStringRef(); @@ -1942,6 +2016,10 @@ bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata) handle_object_delete(); break; case 'r': // return + if (RlvActions::isRlvEnabled() && !rlvCanDeleteOrReturn()) + { + break; + } handle_object_return(); break; default: diff --git a/indra/newview/fsareasearch.h b/indra/newview/fsareasearch.h index 44a67c0f87..1ee82baa5a 100644 --- a/indra/newview/fsareasearch.h +++ b/indra/newview/fsareasearch.h @@ -305,6 +305,7 @@ private: bool onContextMenuItemClick(const LLSD& userdata); bool onContextMenuItemEnable(const LLSD& userdata); + bool onContextMenuItemVisibleRLV(const LLSD& userdata); void onColumnVisibilityChecked(const LLSD& userdata); bool onEnableColumnVisibilityChecked(const LLSD& userdata); diff --git a/indra/newview/fsareasearchmenu.cpp b/indra/newview/fsareasearchmenu.cpp index bbef3c73ed..c5fd1b6eaf 100644 --- a/indra/newview/fsareasearchmenu.cpp +++ b/indra/newview/fsareasearchmenu.cpp @@ -41,6 +41,7 @@ LLContextMenu* FSAreaSearchMenu::createMenu() registrar.add("AreaSearch.Action", boost::bind(&FSAreaSearchMenu::onContextMenuItemClick, this, _2)); enable_registrar.add("AreaSearch.Enable", boost::bind(&FSAreaSearchMenu::onContextMenuItemEnable, this, _2)); + enable_registrar.add("AreaSearch.RLV", boost::bind(&FSAreaSearchMenu::onContextMenuItemVisibleRLV, this, _2)); return createFromFile("menu_fs_area_search.xml"); } @@ -63,3 +64,13 @@ bool FSAreaSearchMenu::onContextMenuItemEnable(const LLSD& userdata) } return false; } + +bool FSAreaSearchMenu::onContextMenuItemVisibleRLV(const LLSD& userdata) +{ + FSAreaSearch* search = LLFloaterReg::findTypedInstance("area_search"); + if (search && search->getPanelList()) + { + return search->getPanelList()->onContextMenuItemVisibleRLV(userdata); + } + return false; +} diff --git a/indra/newview/fsareasearchmenu.h b/indra/newview/fsareasearchmenu.h index 2853c015f7..480b90428e 100644 --- a/indra/newview/fsareasearchmenu.h +++ b/indra/newview/fsareasearchmenu.h @@ -37,6 +37,7 @@ public: private: void onContextMenuItemClick(const LLSD& userdata); bool onContextMenuItemEnable(const LLSD& userdata); + bool onContextMenuItemVisibleRLV(const LLSD& userdata); }; extern FSAreaSearchMenu gFSAreaSearchMenu; diff --git a/indra/newview/fsfloaterpartialinventory.cpp b/indra/newview/fsfloaterpartialinventory.cpp index a206a4e341..3f8b7bd863 100644 --- a/indra/newview/fsfloaterpartialinventory.cpp +++ b/indra/newview/fsfloaterpartialinventory.cpp @@ -37,9 +37,7 @@ FSFloaterPartialInventory::FSFloaterPartialInventory(const LLSD& key) : LLFloate mRootFolderId = key["start_folder_id"].asUUID(); } -FSFloaterPartialInventory::~FSFloaterPartialInventory() -{ -} +FSFloaterPartialInventory::~FSFloaterPartialInventory() = default; BOOL FSFloaterPartialInventory::postBuild() { diff --git a/indra/newview/fsfloaterplacedetails.h b/indra/newview/fsfloaterplacedetails.h index c237eff94d..0c073a13d8 100644 --- a/indra/newview/fsfloaterplacedetails.h +++ b/indra/newview/fsfloaterplacedetails.h @@ -50,8 +50,8 @@ class FSPlaceDetailsPlacesParcelObserver; class FSFloaterPlaceDetails : public LLFloater { public: - FSFloaterPlaceDetails(const LLSD& seed); - virtual ~FSFloaterPlaceDetails(); + explicit FSFloaterPlaceDetails(const LLSD& seed); + ~FSFloaterPlaceDetails() override; /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); diff --git a/indra/newview/fsfloaterprotectedfolders.cpp b/indra/newview/fsfloaterprotectedfolders.cpp index 3c01fba56e..bdebae3d9b 100644 --- a/indra/newview/fsfloaterprotectedfolders.cpp +++ b/indra/newview/fsfloaterprotectedfolders.cpp @@ -40,19 +40,32 @@ FSFloaterProtectedFolders::FSFloaterProtectedFolders(const LLSD& key) : LLFloater(key), - mFolderList(NULL), + mInitialized(false), mFilterSubString(LLStringUtil::null), mFilterSubStringOrig(LLStringUtil::null), mProtectedCategoriesChangedCallbackConnection(), - mInitialized(false) + mFolderList(nullptr) { } FSFloaterProtectedFolders::~FSFloaterProtectedFolders() { - if (mProtectedCategoriesChangedCallbackConnection.connected()) + try { - mProtectedCategoriesChangedCallbackConnection.disconnect(); + if (mProtectedCategoriesChangedCallbackConnection.connected()) + { + mProtectedCategoriesChangedCallbackConnection.disconnect(); + } + } + catch (const std::exception& e) + { + // Log the exception or handle it as needed + LL_WARNS() << "Exception caught in FSFloaterProtectedFolders destructor: " << e.what() << LL_ENDL; + } + catch (...) + { + // Catch any other types of exceptions + LL_WARNS() << "Unknown exception caught in FSFloaterProtectedFolders destructor" << LL_ENDL; } } diff --git a/indra/newview/fsfloaterradar.h b/indra/newview/fsfloaterradar.h index fce244e74f..3fc060b3e5 100644 --- a/indra/newview/fsfloaterradar.h +++ b/indra/newview/fsfloaterradar.h @@ -41,7 +41,7 @@ class FSFloaterRadar LOG_CLASS(FSFloaterRadar); public: FSFloaterRadar(const LLSD &); - virtual ~FSFloaterRadar(); + ~FSFloaterRadar() override; /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); diff --git a/indra/newview/fsfloaterstreamtitle.h b/indra/newview/fsfloaterstreamtitle.h index 594f8bbfa0..830cb2c69e 100644 --- a/indra/newview/fsfloaterstreamtitle.h +++ b/indra/newview/fsfloaterstreamtitle.h @@ -43,7 +43,7 @@ class FSStreamTitleManager : public LLSingleton LLSINGLETON_EMPTY_CTOR(FSStreamTitleManager); public: - ~FSStreamTitleManager(); + ~FSStreamTitleManager() override; using history_vec_t = std::vector; @@ -78,7 +78,7 @@ class FSFloaterStreamTitleHistory : public LLFloater { public: FSFloaterStreamTitleHistory(const LLSD& key); - virtual ~FSFloaterStreamTitleHistory(); + ~FSFloaterStreamTitleHistory() override; BOOL postBuild() override; void draw() override; @@ -99,7 +99,7 @@ class FSFloaterStreamTitle : public LLFloater, LLEventTimer { public: FSFloaterStreamTitle(const LLSD& key); - virtual ~FSFloaterStreamTitle(); + ~FSFloaterStreamTitle() override; BOOL postBuild() override; void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) override; diff --git a/indra/newview/fsfloaterteleporthistory.h b/indra/newview/fsfloaterteleporthistory.h index 768d8aff32..ed08e9433f 100644 --- a/indra/newview/fsfloaterteleporthistory.h +++ b/indra/newview/fsfloaterteleporthistory.h @@ -38,7 +38,7 @@ class FSFloaterTeleportHistory : public LLFloater { public: FSFloaterTeleportHistory(const LLSD& seed); - virtual ~FSFloaterTeleportHistory(); + ~FSFloaterTeleportHistory() override; BOOL postBuild(); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); diff --git a/indra/newview/fsfloatervolumecontrols.cpp b/indra/newview/fsfloatervolumecontrols.cpp index e6dbb4713b..2bb037de6c 100644 --- a/indra/newview/fsfloatervolumecontrols.cpp +++ b/indra/newview/fsfloatervolumecontrols.cpp @@ -40,9 +40,7 @@ FSFloaterVolumeControls::FSFloaterVolumeControls(const LLSD& key) { } -FSFloaterVolumeControls::~FSFloaterVolumeControls() -{ -} +FSFloaterVolumeControls::~FSFloaterVolumeControls() = default; BOOL FSFloaterVolumeControls::postBuild() { diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 66e756720c..2611bd139f 100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp @@ -54,6 +54,9 @@ #include "v3math.h" #include "v4color.h" +#include "rlvactions.h" // Respect RLVa restrictions +#include "rlvcommon.h" // Respect RLVa restrictions + #define XUI_LINKSET_USE_NONE 0 #define XUI_LINKSET_USE_WALKABLE 1 #define XUI_LINKSET_USE_STATIC_OBSTACLE 2 @@ -556,6 +559,29 @@ void LLFloaterPathfindingLinksets::updateStateOnEditFields() int numSelectedItems = getNumSelectedObjects(); bool isEditEnabled = (numSelectedItems > 0); + // Respect RLVa restrictions + if (RlvActions::isRlvEnabled()) + { + if ( + !rlvCanDeleteOrReturn() + || RlvActions::hasBehaviour(RLV_BHVR_FARTOUCH) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHALL) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHWORLD) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHME) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHTHIS) + || RlvActions::hasBehaviour(RLV_BHVR_INTERACT) + ) + { + isEditEnabled = false; + } + + if (RlvActions::hasBehaviour(RLV_BHVR_TPLOCAL)) + { + numSelectedItems = 0; + } + } + // + mEditLinksetUse->setEnabled(isEditEnabled); mLabelWalkabilityCoefficients->setEnabled(isEditEnabled); diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index b264df085a..d4d5808e46 100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -64,6 +64,9 @@ #include "v3math.h" #include "v4color.h" +#include "rlvactions.h" // Respect RLVa restrictions +#include "rlvcommon.h" // Respect RLVa restrictions + #define DEFAULT_BEACON_WIDTH 6 //--------------------------------------------------------------------------- @@ -819,6 +822,29 @@ void LLFloaterPathfindingObjects::updateStateOnActionControls() int numSelectedItems = mObjectsScrollList->getNumSelected(); bool isEditEnabled = (numSelectedItems > 0); + // Respect RLVa restrictions + if (RlvActions::isRlvEnabled()) + { + if ( + !rlvCanDeleteOrReturn() + || RlvActions::hasBehaviour(RLV_BHVR_FARTOUCH) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHALL) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHWORLD) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHME) + || RlvActions::hasBehaviour(RLV_BHVR_TOUCHTHIS) + || RlvActions::hasBehaviour(RLV_BHVR_INTERACT) + ) + { + isEditEnabled = false; + } + + if (RlvActions::hasBehaviour(RLV_BHVR_TPLOCAL)) + { + numSelectedItems = 0; + } + } + // + mShowBeaconCheckBox->setEnabled(isEditEnabled); mTakeButton->setEnabled(isEditEnabled && visible_take_object()); mTakeCopyButton->setEnabled(isEditEnabled && enable_object_take_copy()); diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index 12de4ca76b..999a027d56 100644 --- a/indra/newview/llvosurfacepatch.cpp +++ b/indra/newview/llvosurfacepatch.cpp @@ -987,7 +987,7 @@ LLTerrainPartition::LLTerrainPartition(LLViewerRegion* regionp) } // Do not add vertices; honor strict vertex count specified by strider_vertex_count -void gen_terrain_tangents(U16 strider_vertex_count, +void gen_terrain_tangents(U32 strider_vertex_count, // [FIRE-34363] Fix implicit cast from U32->U16 that can cause a crash U32 strider_index_count, LLStrider &verticesp, LLStrider &normalsp, @@ -1003,7 +1003,7 @@ void gen_terrain_tangents(U16 strider_vertex_count, std::vector texcoords(strider_vertex_count); std::vector indices(strider_index_count); - for (U16 v = 0; v < strider_vertex_count; ++v) + for (U32 v = 0; v < strider_vertex_count; ++v) // [FIRE-34363] Fix implicit cast from U32->U16 that can cause a crash { F32 *vert = verticesp[v].mV; vertices[v] = LLVector4a(vert[0], vert[1], vert[2], 1.f); @@ -1019,7 +1019,7 @@ void gen_terrain_tangents(U16 strider_vertex_count, LLCalculateTangentArray(strider_vertex_count, vertices, normals, texcoords.data(), strider_index_count / 3, indices.data(), tangents); - for (U16 v = 0; v < strider_vertex_count; ++v) + for (U32 v = 0; v < strider_vertex_count; ++v) // [FIRE-34363] Fix implicit cast from U32->U16 that can cause a crash { tangentsp[v] = tangents[v]; } diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 1d93c91a32..0296fb2e4c 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -787,16 +787,16 @@ bool rlvMenuEnableIfNot(const LLSD& sdParam) // Checked: 2011-05-28 (RLVa-1.4.6) | Modified: RLVa-1.4.0 bool rlvCanDeleteOrReturn(const LLViewerObject* pObj) { - // Block if: @rez=n restricted and owned by us or a group *or* @unsit=n restricted and being sat on by us + // Block if: @rez=n or @edit=n restricted and owned/editable by us or a group *or* @unsit=n restricted and being sat on by us return - ( (!gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || ((!pObj->permYouOwner()) && (!pObj->permGroupOwner())) ) && + ( (!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT) && !gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || ((!pObj->permYouOwner()) && (!pObj->permModify()) && (!pObj->permGroupOwner())) ) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (!isAgentAvatarValid()) || (!pObj->getRootEdit()->isChild(gAgentAvatarp)) ); } // Checked: 2011-05-28 (RLVa-1.4.6) | Modified: RLVa-1.4.0 bool rlvCanDeleteOrReturn() { - if ( (gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) ) + if ( (gRlvHandler.hasBehaviour(RLV_BHVR_EDIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) ) { struct RlvCanDeleteOrReturn : public LLSelectedObjectFunctor { diff --git a/indra/newview/skins/default/xui/en/menu_fs_area_search.xml b/indra/newview/skins/default/xui/en/menu_fs_area_search.xml index 2215bfece5..fba0cd2a29 100644 --- a/indra/newview/skins/default/xui/en/menu_fs_area_search.xml +++ b/indra/newview/skins/default/xui/en/menu_fs_area_search.xml @@ -12,6 +12,9 @@ + + + + + + + + + + @@ -106,6 +136,9 @@ + diff --git a/indra/newview/skins/default/xui/ru/menu_object.xml b/indra/newview/skins/default/xui/ru/menu_object.xml index b39d866db7..1cb506bfc6 100644 --- a/indra/newview/skins/default/xui/ru/menu_object.xml +++ b/indra/newview/skins/default/xui/ru/menu_object.xml @@ -43,6 +43,10 @@ + + + + diff --git a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml index a404787736..fc55b4df12 100644 --- a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml @@ -16,39 +16,38 @@ - - - - - - + + + + - - - - - - - - - - - - - - -