From 26a625c1e4e86011048175a06c96207f18caf82c Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 31 Jul 2024 13:25:38 +0100 Subject: [PATCH 01/12] Modernise and use override where possible to keep clang happy --- indra/newview/fsfloaterplacedetails.h | 4 ++-- indra/newview/fsfloaterradar.h | 2 +- indra/newview/fsfloaterstreamtitle.h | 6 +++--- indra/newview/fsfloaterteleporthistory.h | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) 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/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); From be58c529aaa719349a6b9b828394b18fc950378c Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 31 Jul 2024 13:26:36 +0100 Subject: [PATCH 02/12] use modern (default) impl rather than empties. --- indra/newview/fsfloaterpartialinventory.cpp | 4 +--- indra/newview/fsfloatervolumecontrols.cpp | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) 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/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() { From e03c3c8e9db0aaf50b426773e03a3874a5f798d8 Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 1 Aug 2024 10:27:51 +0100 Subject: [PATCH 03/12] Fix order of initialisation and uncaught exception in destructor --- indra/newview/fsfloaterprotectedfolders.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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; } } From 2692e4c3aecf13366017a3cccb4b79cbc057f772 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Sun, 4 Aug 2024 21:21:04 +0200 Subject: [PATCH 04/12] Make area search menu and pathfinding objects floater visually respect RLV restrictions, also add missing @edit condition to blocking delete and return. --- indra/newview/fsareasearch.cpp | 53 +++++++++++++++++++ indra/newview/fsareasearch.h | 1 + indra/newview/fsareasearchmenu.cpp | 11 ++++ indra/newview/fsareasearchmenu.h | 1 + indra/newview/llfloaterpathfindingobjects.cpp | 26 +++++++++ indra/newview/rlvcommon.cpp | 6 +-- .../default/xui/en/menu_fs_area_search.xml | 42 +++++++++++++++ 7 files changed, 137 insertions(+), 3 deletions(-) diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index aeecbe4734..29e56b129a 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -1626,6 +1626,59 @@ void FSPanelAreaSearchList::updateName(const LLUUID& id, const std::string& name } } +bool FSPanelAreaSearchList::onContextMenuItemEnableRLV(const LLSD& userdata) +{ + if (!RlvActions::isRlvEnabled()) + { + return true; + } + + if (RlvActions::hasBehaviour(RLV_BHVR_INTERACT)) + { + return false; + } + + const std::string& parameter = userdata.asStringRef(); + + 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 (parameter == "delete") + { + if (!rlvCanDeleteOrReturn(objectp)) + { + return false; + } + } + else if (parameter == "touch") + { + if (!RlvActions::canTouch(objectp)) return false; + } + else if (parameter == "edit") + { + if (!RlvActions::canEdit(objectp)) return false; + } + else if (parameter == "sit") + { + if (!RlvActions::canSit(objectp)) return false; + } + else if (parameter == "teleport") + { + if (!RlvActions::canTeleportToLocal(objectp->getPositionGlobal())) return false; + } + } + + return true; +} + bool FSPanelAreaSearchList::onContextMenuItemEnable(const LLSD& userdata) { const std::string& parameter = userdata.asStringRef(); diff --git a/indra/newview/fsareasearch.h b/indra/newview/fsareasearch.h index 44a67c0f87..8b768a5919 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 onContextMenuItemEnableRLV(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..f47159dd06 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::onContextMenuItemEnableRLV, this, _2)); return createFromFile("menu_fs_area_search.xml"); } @@ -63,3 +64,13 @@ bool FSAreaSearchMenu::onContextMenuItemEnable(const LLSD& userdata) } return false; } + +bool FSAreaSearchMenu::onContextMenuItemEnableRLV(const LLSD& userdata) +{ + FSAreaSearch* search = LLFloaterReg::findTypedInstance("area_search"); + if (search && search->getPanelList()) + { + return search->getPanelList()->onContextMenuItemEnableRLV(userdata); + } + return false; +} diff --git a/indra/newview/fsareasearchmenu.h b/indra/newview/fsareasearchmenu.h index 2853c015f7..014691e7de 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 onContextMenuItemEnableRLV(const LLSD& userdata); }; extern FSAreaSearchMenu gFSAreaSearchMenu; 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/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 1d93c91a32..3bc91a7aad 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 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->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..e820312582 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 +142,12 @@ + + From 544a5164801348827286e8b4d399dfbcc8998670 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Sun, 4 Aug 2024 22:57:37 +0200 Subject: [PATCH 05/12] Apparently, things are never as easy as they at first seem. This reverts commit 2692e4c3aecf13366017a3cccb4b79cbc057f772. --- indra/newview/fsareasearch.cpp | 53 ------------------- indra/newview/fsareasearch.h | 1 - indra/newview/fsareasearchmenu.cpp | 11 ---- indra/newview/fsareasearchmenu.h | 1 - indra/newview/llfloaterpathfindingobjects.cpp | 26 --------- indra/newview/rlvcommon.cpp | 6 +-- .../default/xui/en/menu_fs_area_search.xml | 42 --------------- 7 files changed, 3 insertions(+), 137 deletions(-) diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index 29e56b129a..aeecbe4734 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -1626,59 +1626,6 @@ void FSPanelAreaSearchList::updateName(const LLUUID& id, const std::string& name } } -bool FSPanelAreaSearchList::onContextMenuItemEnableRLV(const LLSD& userdata) -{ - if (!RlvActions::isRlvEnabled()) - { - return true; - } - - if (RlvActions::hasBehaviour(RLV_BHVR_INTERACT)) - { - return false; - } - - const std::string& parameter = userdata.asStringRef(); - - 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 (parameter == "delete") - { - if (!rlvCanDeleteOrReturn(objectp)) - { - return false; - } - } - else if (parameter == "touch") - { - if (!RlvActions::canTouch(objectp)) return false; - } - else if (parameter == "edit") - { - if (!RlvActions::canEdit(objectp)) return false; - } - else if (parameter == "sit") - { - if (!RlvActions::canSit(objectp)) return false; - } - else if (parameter == "teleport") - { - if (!RlvActions::canTeleportToLocal(objectp->getPositionGlobal())) return false; - } - } - - return true; -} - bool FSPanelAreaSearchList::onContextMenuItemEnable(const LLSD& userdata) { const std::string& parameter = userdata.asStringRef(); diff --git a/indra/newview/fsareasearch.h b/indra/newview/fsareasearch.h index 8b768a5919..44a67c0f87 100644 --- a/indra/newview/fsareasearch.h +++ b/indra/newview/fsareasearch.h @@ -305,7 +305,6 @@ private: bool onContextMenuItemClick(const LLSD& userdata); bool onContextMenuItemEnable(const LLSD& userdata); - bool onContextMenuItemEnableRLV(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 f47159dd06..bbef3c73ed 100644 --- a/indra/newview/fsareasearchmenu.cpp +++ b/indra/newview/fsareasearchmenu.cpp @@ -41,7 +41,6 @@ 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::onContextMenuItemEnableRLV, this, _2)); return createFromFile("menu_fs_area_search.xml"); } @@ -64,13 +63,3 @@ bool FSAreaSearchMenu::onContextMenuItemEnable(const LLSD& userdata) } return false; } - -bool FSAreaSearchMenu::onContextMenuItemEnableRLV(const LLSD& userdata) -{ - FSAreaSearch* search = LLFloaterReg::findTypedInstance("area_search"); - if (search && search->getPanelList()) - { - return search->getPanelList()->onContextMenuItemEnableRLV(userdata); - } - return false; -} diff --git a/indra/newview/fsareasearchmenu.h b/indra/newview/fsareasearchmenu.h index 014691e7de..2853c015f7 100644 --- a/indra/newview/fsareasearchmenu.h +++ b/indra/newview/fsareasearchmenu.h @@ -37,7 +37,6 @@ public: private: void onContextMenuItemClick(const LLSD& userdata); bool onContextMenuItemEnable(const LLSD& userdata); - bool onContextMenuItemEnableRLV(const LLSD& userdata); }; extern FSAreaSearchMenu gFSAreaSearchMenu; diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index d4d5808e46..b264df085a 100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -64,9 +64,6 @@ #include "v3math.h" #include "v4color.h" -#include "rlvactions.h" // Respect RLVa restrictions -#include "rlvcommon.h" // Respect RLVa restrictions - #define DEFAULT_BEACON_WIDTH 6 //--------------------------------------------------------------------------- @@ -822,29 +819,6 @@ 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/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 3bc91a7aad..1d93c91a32 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 or @edit=n restricted and owned by us or a group *or* @unsit=n restricted and being sat on by us + // Block if: @rez=n restricted and owned by us or a group *or* @unsit=n restricted and being sat on by us return - ( (!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT) && !gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || ((!pObj->permYouOwner()) && (!pObj->permGroupOwner())) ) && + ( (!gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || ((!pObj->permYouOwner()) && (!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_EDIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) ) + if ( (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 e820312582..2215bfece5 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,9 +12,6 @@ - - - - - - - - - - - - @@ -142,12 +106,6 @@ - - From 61eae62a84e7ad5777e1392b82b08926eb803a66 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Mon, 5 Aug 2024 12:53:51 +0200 Subject: [PATCH 06/12] Make area search menu and pathfinding objects floater visually respect RLV restrictions, also add missing @edit condition to blocking delete and return. --- indra/newview/fsareasearch.cpp | 78 +++++++++++++++++++ indra/newview/fsareasearch.h | 1 + indra/newview/fsareasearchmenu.cpp | 11 +++ indra/newview/fsareasearchmenu.h | 1 + .../newview/llfloaterpathfindinglinksets.cpp | 26 +++++++ indra/newview/llfloaterpathfindingobjects.cpp | 26 +++++++ indra/newview/rlvcommon.cpp | 6 +- .../default/xui/en/menu_fs_area_search.xml | 33 ++++++++ 8 files changed, 179 insertions(+), 3 deletions(-) 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/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/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 @@ + From 2becb70686e9363c28bb465d897cc3b1b7a235e3 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Mon, 5 Aug 2024 22:14:17 +1000 Subject: [PATCH 07/12] Fixed unwanted implicit cast of U32 to U16 causing a crash --- indra/newview/llvosurfacepatch.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index 12de4ca76b..0bb401449b 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, 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) { 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) { tangentsp[v] = tangents[v]; } From b65be38ae0b2cd03d0f8b1591998e671fe212557 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Mon, 5 Aug 2024 23:14:41 +1000 Subject: [PATCH 08/12] Added missing FS tags --- indra/newview/llvosurfacepatch.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index 0bb401449b..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(U32 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(U32 strider_vertex_count, std::vector texcoords(strider_vertex_count); std::vector indices(strider_index_count); - for (U32 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(U32 strider_vertex_count, LLCalculateTangentArray(strider_vertex_count, vertices, normals, texcoords.data(), strider_index_count / 3, indices.data(), tangents); - for (U32 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]; } From d48f3cb69c9c687eae45a3070532388341bf0672 Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 6 Aug 2024 11:48:06 +0100 Subject: [PATCH 09/12] Introduce separate webhook for manual builds Reduce noise by segregating automated and manually triggered build notifications. --- .github/workflows/build_viewer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 526696566d3aefae936716fc6250464048e4d316 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 6 Aug 2024 14:51:05 +0200 Subject: [PATCH 10/12] FIRE-34368: Fix discrepancy in emoji rendering between Firestorm and LL viewer caused by different fallback fonts and order --- indra/newview/fonts/fonts.xml | 6 +----- indra/newview/fonts/fonts_cascadia_code.xml | 6 +----- indra/newview/fonts/fonts_celestia_medium_redux.xml | 6 +----- indra/newview/fonts/fonts_deja_vu_all_caps.xml | 5 +---- indra/newview/fonts/fonts_droid.xml | 6 +----- indra/newview/fonts/fonts_dyslexia.xml | 6 +----- indra/newview/fonts/fonts_liberation.xml | 6 +----- indra/newview/fonts/fonts_mobi.xml | 6 +----- indra/newview/fonts/fonts_noto.xml | 6 +----- indra/newview/fonts/fonts_roboto.xml | 6 +----- indra/newview/fonts/fonts_ubuntu.xml | 6 +----- 11 files changed, 11 insertions(+), 54 deletions(-) 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 From 6d1d0ebb2276d276fba375856c99007d6ad7b006 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Tue, 6 Aug 2024 19:38:27 +0200 Subject: [PATCH 11/12] FIRE-34344 - add safeguard for string to longlong conversion against 0 pointer --- indra/media_plugins/cef/linux_volume_catcher.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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? { From 1d4269a28c470ce09c69d81412e67f4e2abf5274 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Fri, 9 Aug 2024 23:34:10 +0200 Subject: [PATCH 12/12] FIRE-34370 FIRE-34373 Russian translation update, Romka Swallowtail --- .../skins/default/xui/ru/menu_object.xml | 4 ++ .../xui/ru/panel_group_info_sidetray.xml | 61 +++++++++---------- .../xui/ru/panel_preferences_graphics1.xml | 7 +++ .../xui/ru/panel_preferences_sound.xml | 10 +++ 4 files changed, 51 insertions(+), 31 deletions(-) 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 @@ - - - - - - + + + + - - - - - - - - - - - - - - -