From da395c715ca7f06af015091e36b28c85cbbef742 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Sun, 27 Jul 2025 04:17:13 +1000 Subject: [PATCH 01/74] Implemented seperate Conversations opacity options --- indra/llui/lluictrl.cpp | 8 ++++++ indra/llui/lluictrl.h | 5 ++++ indra/newview/app_settings/settings.xml | 22 +++++++++++++++ indra/newview/fsfloaterim.cpp | 12 ++++++++ indra/newview/fsfloaterim.h | 2 ++ indra/newview/fsfloaterimcontainer.cpp | 16 +++++++++++ indra/newview/fsfloaterimcontainer.h | 2 ++ indra/newview/fsfloaternearbychat.cpp | 3 ++ .../xui/en/panel_preferences_colors.xml | 28 +++++++++++++++++++ 9 files changed, 98 insertions(+) diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index e23acd85b9..3dfbc508df 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -1086,6 +1086,14 @@ F32 LLUICtrl::getCurrentTransparency() } + // [FIRE-35804] Allow the IM floater to have separate transparency + // This is specifically for making the text editors such as chat_editor always active opacity when the IM floater is focused + if (mGetIMOpacityCallback && mTransparencyType != TT_ACTIVE) + { + return llmin(mGetIMOpacityCallback(), alpha); + } + // + return alpha; } diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 4be0a23261..eeb9296305 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -238,6 +238,11 @@ public: void setTransparencyType(ETypeTransparency type); ETypeTransparency getTransparencyType() const {return mTransparencyType;} + // [FIRE-35804] Allow the IM floater to have separate transparency + boost::function mGetIMOpacityCallback; + void setGetIMOpacityCallback (boost::function cb) { mGetIMOpacityCallback = cb; } + // + bool focusNextItem(bool text_entry_only); bool focusPrevItem(bool text_entry_only); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7531ea03c2..1316cf7853 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -26773,5 +26773,27 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + FSIMOpacity + + Comment + Opacity of the IM floater + Persist + 1 + Type + F32 + Value + 1.0 + + FSImActiveOpacityOverride + + Comment + When enabled, uses the Active Opacity value when IM window is focused + Persist + 1 + Type + Boolean + Value + 0 + diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp index ef83dd0f4f..cf3e58edea 100644 --- a/indra/newview/fsfloaterim.cpp +++ b/indra/newview/fsfloaterim.cpp @@ -1010,6 +1010,9 @@ bool FSFloaterIM::postBuild() mInputEditor->setFont(LLViewerChat::getChatFont()); mInputEditor->enableSingleLineMode(gSavedSettings.getBOOL("FSUseSingleLineChatEntry")); mInputEditor->setCommitCallback(boost::bind(&FSFloaterIM::sendMsgFromInputEditor, this, CHAT_TYPE_NORMAL)); + // [FIRE-35804] Allow the IM floater to have separate transparency + mInputEditor->setGetIMOpacityCallback(boost::bind(&FSFloaterIM::onGetIMOpacityCallback)); + // mEmojiRecentPanelToggleBtn = getChild("emoji_recent_panel_toggle_btn"); mEmojiRecentPanelToggleBtn->setClickedCallback([this](LLUICtrl*, const LLSD&) { onEmojiRecentPanelToggleBtnClicked(); }); @@ -2650,3 +2653,12 @@ uuid_vec_t FSFloaterIM::getSessionParticipants() const return mControlPanel->getParticipants(); } + +// [FIRE-35804] Allow the IM floater to have separate transparency +// static +F32 FSFloaterIM::onGetIMOpacityCallback() +{ + static LLCachedControl im_opacity(gSavedSettings, "FSIMOpacity", 1.0f); + return im_opacity; +} +// diff --git a/indra/newview/fsfloaterim.h b/indra/newview/fsfloaterim.h index 0b5d65bf7e..3ed36de1db 100644 --- a/indra/newview/fsfloaterim.h +++ b/indra/newview/fsfloaterim.h @@ -164,6 +164,8 @@ public: uuid_vec_t getSessionParticipants() const; + static F32 onGetIMOpacityCallback(); // [FIRE-35804] Allow the IM floater to have separate transparency + protected: /* virtual */ void onClickCloseBtn(bool app_quitting = false); diff --git a/indra/newview/fsfloaterimcontainer.cpp b/indra/newview/fsfloaterimcontainer.cpp index a4db0dc21a..19c4bd8f8a 100644 --- a/indra/newview/fsfloaterimcontainer.cpp +++ b/indra/newview/fsfloaterimcontainer.cpp @@ -373,6 +373,22 @@ FSFloaterIMContainer* FSFloaterIMContainer::getInstance() return LLFloaterReg::getTypedInstance("fs_im_container"); } +// [FIRE-35804] Allow the IM floater to have separate transparency +F32 FSFloaterIMContainer::getCurrentTransparency() +{ + static LLCachedControl im_opacity(gSavedSettings, "FSIMOpacity", 1.0f); + static LLCachedControl im_active_opacity_override(gSavedSettings, "FSImActiveOpacityOverride", false); + + F32 floater_opacity = LLUICtrl::getCurrentTransparency(); + if (im_active_opacity_override && getTransparencyType() == TT_ACTIVE) + { + return floater_opacity; + } + + return llmin(im_opacity(), floater_opacity); +} +// + void FSFloaterIMContainer::setVisible(bool b) { LLMultiFloater::setVisible(b); diff --git a/indra/newview/fsfloaterimcontainer.h b/indra/newview/fsfloaterimcontainer.h index 50b9b36d1f..198b32be6d 100644 --- a/indra/newview/fsfloaterimcontainer.h +++ b/indra/newview/fsfloaterimcontainer.h @@ -60,6 +60,8 @@ public: static FSFloaterIMContainer* findInstance(); static FSFloaterIMContainer* getInstance(); + F32 getCurrentTransparency() override; // [FIRE-35804] Allow the IM floater to have separate transparency + virtual void setVisible(bool b); /*virtual*/ void setMinimized(bool b); diff --git a/indra/newview/fsfloaternearbychat.cpp b/indra/newview/fsfloaternearbychat.cpp index 80e58347e8..ddea2b28ac 100644 --- a/indra/newview/fsfloaternearbychat.cpp +++ b/indra/newview/fsfloaternearbychat.cpp @@ -148,6 +148,9 @@ bool FSFloaterNearbyChat::postBuild() mInputEditor->setFont(LLViewerChat::getChatFont()); mInputEditor->setLabel(getString("chatbox_label")); mInputEditor->enableSingleLineMode(gSavedSettings.getBOOL("FSUseSingleLineChatEntry")); + // [FIRE-35804] Allow the IM floater to have separate transparency + mInputEditor->setGetIMOpacityCallback(boost::bind(&FSFloaterIM::onGetIMOpacityCallback)); + // mChatLayoutPanel = getChild("chat_layout_panel"); mInputPanels = getChild("input_panels"); diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 8df8102615..5cfae471f2 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml @@ -1857,6 +1857,34 @@ show_text="true" top_pad="2" width="415" /> + + Date: Sun, 27 Jul 2025 13:13:19 +1000 Subject: [PATCH 02/74] Fixed settings error for FSImActiveOpacityOverride --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1316cf7853..1a31effea3 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -26793,7 +26793,7 @@ Change of this parameter will affect the layout of buttons in notification toast Type Boolean Value - 0 + 0 From b4a7ef835c7355e4bb4427a7c2bc118a011df3d7 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Mon, 28 Jul 2025 02:27:53 +1000 Subject: [PATCH 03/74] Refactored Conversations opacity override and made the callback to override transparency generic --- indra/llui/lluictrl.cpp | 7 +++---- indra/llui/lluictrl.h | 6 +++--- indra/newview/fsfloaterim.cpp | 14 ++++++++++---- indra/newview/fsfloaterim.h | 4 +++- indra/newview/fsfloaternearbychat.cpp | 17 ++++++++++++++++- indra/newview/fsfloaternearbychat.h | 4 ++++ 6 files changed, 39 insertions(+), 13 deletions(-) diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 3dfbc508df..5f77c3346f 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -1086,11 +1086,10 @@ F32 LLUICtrl::getCurrentTransparency() } - // [FIRE-35804] Allow the IM floater to have separate transparency - // This is specifically for making the text editors such as chat_editor always active opacity when the IM floater is focused - if (mGetIMOpacityCallback && mTransparencyType != TT_ACTIVE) + // Allow any UICtrl to override the transparency with a callback + if (mTransparencyOverrideCallback) { - return llmin(mGetIMOpacityCallback(), alpha); + return mTransparencyOverrideCallback(mTransparencyType, alpha); } // diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index eeb9296305..0536e9b7ae 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -238,9 +238,9 @@ public: void setTransparencyType(ETypeTransparency type); ETypeTransparency getTransparencyType() const {return mTransparencyType;} - // [FIRE-35804] Allow the IM floater to have separate transparency - boost::function mGetIMOpacityCallback; - void setGetIMOpacityCallback (boost::function cb) { mGetIMOpacityCallback = cb; } + // Allow any UICtrl to override the transparency with a callback + boost::function mTransparencyOverrideCallback; + void setTransparencyOverrideCallback (boost::function cb) { mTransparencyOverrideCallback = cb; } // bool focusNextItem(bool text_entry_only); diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp index cf3e58edea..2521526440 100644 --- a/indra/newview/fsfloaterim.cpp +++ b/indra/newview/fsfloaterim.cpp @@ -1011,7 +1011,7 @@ bool FSFloaterIM::postBuild() mInputEditor->enableSingleLineMode(gSavedSettings.getBOOL("FSUseSingleLineChatEntry")); mInputEditor->setCommitCallback(boost::bind(&FSFloaterIM::sendMsgFromInputEditor, this, CHAT_TYPE_NORMAL)); // [FIRE-35804] Allow the IM floater to have separate transparency - mInputEditor->setGetIMOpacityCallback(boost::bind(&FSFloaterIM::onGetIMOpacityCallback)); + mInputEditor->setTransparencyOverrideCallback(boost::bind(&FSFloaterIM::onGetChatEditorOpacityCallback, this, _1, _2)); // mEmojiRecentPanelToggleBtn = getChild("emoji_recent_panel_toggle_btn"); @@ -2655,10 +2655,16 @@ uuid_vec_t FSFloaterIM::getSessionParticipants() const } // [FIRE-35804] Allow the IM floater to have separate transparency -// static -F32 FSFloaterIM::onGetIMOpacityCallback() +// This is specifically for making the text editors such as chat_editor always active opacity when the IM floater is focused +// Otherwise if they aren't active, it will use either the IM opacity, or inactive opacity, whatever is smaller +F32 FSFloaterIM::onGetChatEditorOpacityCallback(ETypeTransparency type, F32 alpha) { static LLCachedControl im_opacity(gSavedSettings, "FSIMOpacity", 1.0f); - return im_opacity; + if (type != TT_ACTIVE) + { + return llmin(im_opacity, alpha); + } + + return alpha; } // diff --git a/indra/newview/fsfloaterim.h b/indra/newview/fsfloaterim.h index 3ed36de1db..3d20957063 100644 --- a/indra/newview/fsfloaterim.h +++ b/indra/newview/fsfloaterim.h @@ -164,7 +164,9 @@ public: uuid_vec_t getSessionParticipants() const; - static F32 onGetIMOpacityCallback(); // [FIRE-35804] Allow the IM floater to have separate transparency + // [FIRE-35804] Allow the IM floater to have separate transparency + F32 onGetChatEditorOpacityCallback(ETypeTransparency type, F32 alpha); + // protected: /* virtual */ diff --git a/indra/newview/fsfloaternearbychat.cpp b/indra/newview/fsfloaternearbychat.cpp index ddea2b28ac..51e1d31fad 100644 --- a/indra/newview/fsfloaternearbychat.cpp +++ b/indra/newview/fsfloaternearbychat.cpp @@ -149,7 +149,7 @@ bool FSFloaterNearbyChat::postBuild() mInputEditor->setLabel(getString("chatbox_label")); mInputEditor->enableSingleLineMode(gSavedSettings.getBOOL("FSUseSingleLineChatEntry")); // [FIRE-35804] Allow the IM floater to have separate transparency - mInputEditor->setGetIMOpacityCallback(boost::bind(&FSFloaterIM::onGetIMOpacityCallback)); + mInputEditor->setTransparencyOverrideCallback(boost::bind(&FSFloaterNearbyChat::onGetChatBoxOpacityCallback, this, _1, _2)); // mChatLayoutPanel = getChild("chat_layout_panel"); @@ -1110,3 +1110,18 @@ uuid_vec_t FSFloaterNearbyChat::getSessionParticipants() const return avatarIds; } + +// [FIRE-35804] Allow the IM floater to have separate transparency +// This is specifically for making the text editors such as chat_editor always active opacity when the IM floater is focused +// Otherwise if they aren't active, it will use either the IM opacity, or inactive opacity, whatever is smaller +F32 FSFloaterNearbyChat::onGetChatBoxOpacityCallback(ETypeTransparency type, F32 alpha) +{ + static LLCachedControl im_opacity(gSavedSettings, "FSIMOpacity", 1.0f); + if (type != TT_ACTIVE) + { + return llmin(im_opacity, alpha); + } + + return alpha; +} +// diff --git a/indra/newview/fsfloaternearbychat.h b/indra/newview/fsfloaternearbychat.h index 37641a4be3..ee485e5498 100644 --- a/indra/newview/fsfloaternearbychat.h +++ b/indra/newview/fsfloaternearbychat.h @@ -104,6 +104,10 @@ public: uuid_vec_t getSessionParticipants() const; + // [FIRE-35804] Allow the IM floater to have separate transparency + F32 onGetChatBoxOpacityCallback(ETypeTransparency type, F32 alpha); + // + protected: void onChatBoxKeystroke(); void onChatBoxFocusLost(); From 882fc91b0c8ba9f8c1d1fbc2727b27b9f572ee61 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Tue, 26 Aug 2025 21:55:37 +1000 Subject: [PATCH 04/74] Added missing opacity overrides for filter editors in the conversations floater --- indra/llui/llfiltereditor.cpp | 8 ++++++++ indra/llui/llfiltereditor.h | 4 ++++ indra/llui/lluictrl.h | 2 +- indra/newview/fsfloatercontacts.cpp | 21 +++++++++++++++++++++ indra/newview/fsfloatercontacts.h | 4 ++++ 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/indra/llui/llfiltereditor.cpp b/indra/llui/llfiltereditor.cpp index f7b3a1e9a6..1ce8a6d9d0 100644 --- a/indra/llui/llfiltereditor.cpp +++ b/indra/llui/llfiltereditor.cpp @@ -44,3 +44,11 @@ void LLFilterEditor::handleKeystroke() // Commit on every keystroke. onCommit(); } + +// Allow any UICtrl to override the transparency with a callback +void LLFilterEditor::setTransparencyOverrideCallback(boost::function cb) +{ + // Simply setting it on the LLFilterEditor object doesn't work + mSearchEditor->setTransparencyOverrideCallback(cb); +} +// diff --git a/indra/llui/llfiltereditor.h b/indra/llui/llfiltereditor.h index 685219c9f6..76a633eb45 100644 --- a/indra/llui/llfiltereditor.h +++ b/indra/llui/llfiltereditor.h @@ -45,6 +45,10 @@ public: {}; virtual ~LLFilterEditor() {} + // Allow any UICtrl to override the transparency with a callback + void setTransparencyOverrideCallback(boost::function cb) override; + // + protected: LLFilterEditor(const Params&); friend class LLUICtrlFactory; diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 0536e9b7ae..13ab720ef4 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -240,7 +240,7 @@ public: // Allow any UICtrl to override the transparency with a callback boost::function mTransparencyOverrideCallback; - void setTransparencyOverrideCallback (boost::function cb) { mTransparencyOverrideCallback = cb; } + virtual void setTransparencyOverrideCallback(boost::function cb) { mTransparencyOverrideCallback = cb; } // bool focusNextItem(bool text_entry_only); diff --git a/indra/newview/fsfloatercontacts.cpp b/indra/newview/fsfloatercontacts.cpp index e3f08b2ac3..03c3cd8e95 100644 --- a/indra/newview/fsfloatercontacts.cpp +++ b/indra/newview/fsfloatercontacts.cpp @@ -131,6 +131,9 @@ bool FSFloaterContacts::postBuild() mFriendsCountTb->setTextArg("COUNT", llformat("%d", mFriendsList->getItemCount())); mFriendFilter = mFriendsTab->getChild("friend_filter_input"); mFriendFilter->setCommitCallback(boost::bind(&FSFloaterContacts::onFriendFilterEdit, this, _2)); + // [FIRE-35804] Allow the IM floater to have separate transparency + mFriendFilter->setTransparencyOverrideCallback(boost::bind(&FSFloaterContacts::onGetFilterOpacityCallback, this, _1, _2)); + // mGroupsTab = getChild(GROUP_TAB_NAME); mGroupList = mGroupsTab->getChild("group_list"); @@ -163,6 +166,9 @@ bool FSFloaterContacts::postBuild() mGroupssCountTb = mGroupsTab->getChild("groupcount"); mGroupFilter = mGroupsTab->getChild("group_filter_input"); mGroupFilter->setCommitCallback(boost::bind(&FSFloaterContacts::onGroupFilterEdit, this, _2)); + // [FIRE-35804] Allow the IM floater to have separate transparency + mGroupFilter->setTransparencyOverrideCallback(boost::bind(&FSFloaterContacts::onGetFilterOpacityCallback, this, _1, _2)); + // mRlvBehaviorCallbackConnection = gRlvHandler.setBehaviourCallback(boost::bind(&FSFloaterContacts::updateRlvRestrictions, this, _1)); @@ -1345,4 +1351,19 @@ void FSFloaterContacts::onGroupFilterEdit(const std::string& search_string) { mGroupList->setNameFilter(search_string); } + +// [FIRE-35804] Allow the IM floater to have separate transparency +// This is specifically for making the filter editors such as mFriendFilter and mGroupFilter always active opacity when the IM floater is focused +// Otherwise if they aren't active, it will use either the IM opacity, or inactive opacity, whatever is smaller +F32 FSFloaterContacts::onGetFilterOpacityCallback(ETypeTransparency type, F32 alpha) +{ + static LLCachedControl im_opacity(gSavedSettings, "FSIMOpacity", 1.0f); + if (type != TT_ACTIVE) + { + return llmin(im_opacity, alpha); + } + + return alpha; +} +// // EOF diff --git a/indra/newview/fsfloatercontacts.h b/indra/newview/fsfloatercontacts.h index 660ed8905b..5c3061eff3 100644 --- a/indra/newview/fsfloatercontacts.h +++ b/indra/newview/fsfloatercontacts.h @@ -70,6 +70,10 @@ public: void onDisplayNameChanged(); void resetFriendFilter(); + // [FIRE-35804] Allow the IM floater to have separate transparency + F32 onGetFilterOpacityCallback(ETypeTransparency type, F32 alpha); + // + private: typedef std::vector listitem_vec_t; From 180ebf3a32e3fff6e1e29241be6b488faa5da756 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Wed, 27 Aug 2025 20:32:24 +1000 Subject: [PATCH 05/74] Use PST/PDT when logged into OpenSim instead of SLT --- indra/llcommon/llstring.cpp | 14 ++++++++++++-- indra/llcommon/llstring.h | 7 +++++++ indra/newview/llstartup.cpp | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index bcd5e30b1e..efc9cb6180 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -1070,6 +1070,7 @@ std::optional llstring_getoptenv(const std::string& key) long LLStringOps::sPacificTimeOffset = 0; long LLStringOps::sLocalTimeOffset = 0; bool LLStringOps::sPacificDaylightTime = 0; +bool LLStringOps::sUsingPacificTime = false; // [FIRE-34775] Use PST/PDT when logged into OpenSim std::map LLStringOps::datetimeToCodes; std::vector LLStringOps::sWeekDayList; @@ -1628,12 +1629,21 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token, } else { -#if 0 +// [FIRE-34775] Use PST/PDT when logged into OpenSim +#ifdef OPENSIM // EXT-1565 : Zai Lynch, James Linden : 15/Oct/09 // [BSI] Feedback: Viewer clock mentions SLT, but would prefer it to show PST/PDT // "slt" = Second Life Time, which is deprecated. // If not utc or user local time, fallback to Pacific time - replacement = LLStringOps::getPacificDaylightTime() ? "PDT" : "PST"; + if (LLStringOps::getUsingPacificTime()) + { + replacement = LLStringOps::getPacificDaylightTime() ? "PDT" : "PST"; + } + else + { + replacement = "SLT"; + } +// #else // SL-20370 : Steeltoe Linden : 29/Sep/23 // Change "PDT" to "SLT" on menu bar diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 07615aa027..9375534f3c 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -153,6 +153,7 @@ private: static long sPacificTimeOffset; static long sLocalTimeOffset; static bool sPacificDaylightTime; + static bool sUsingPacificTime; // [FIRE-34775] Use PST/PDT when logged into OpenSim static std::map datetimeToCodes; @@ -204,6 +205,9 @@ public: static S32 collate(const llwchar* a, const llwchar* b); static void setupDatetimeInfo(bool pacific_daylight_time); + // [FIRE-34775] Use PST/PDT when logged into OpenSim + static void setupUsingPacificTime(bool use_pacific_time) { sUsingPacificTime = use_pacific_time; } + // static void setupWeekDaysNames(const std::string& data); static void setupWeekDaysShortNames(const std::string& data); @@ -217,6 +221,9 @@ public: // Is the Pacific time zone (aka server time zone) // currently in daylight savings time? static bool getPacificDaylightTime(void) { return sPacificDaylightTime;} + // [FIRE-34775] Use PST/PDT when logged into OpenSim + static bool getUsingPacificTime() { return sUsingPacificTime; } + // static std::string getDatetimeCode (std::string key); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 3acea002ad..06ba5e7fd7 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -4871,6 +4871,9 @@ bool process_login_success_response(U32 &first_sim_size_x, U32 &first_sim_size_y //setup map of datetime strings to codes and slt & local time offset from utc LLStringOps::setupDatetimeInfo(pacific_daylight_time); + // [FIRE-34775] Use PST/PDT when logged into OpenSim + LLStringOps::setupUsingPacificTime(LLGridManager::getInstance()->isInOpenSim()); + // } // set up the voice configuration. Ultimately, we should pass this up as part of each voice From 1afff91ed2e1571f9631690d1d907204fba9680f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 18:14:06 +0000 Subject: [PATCH 06/74] Bump actions/checkout from 4 to 5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yaml | 6 +++--- .github/workflows/build_viewer.yml | 8 ++++---- .github/workflows/deploy_only.yml | 2 +- .github/workflows/pre-commit.yaml | 2 +- .github/workflows/tag-fs-build.yml | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4bf2af644a..b10c2463ef 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -85,7 +85,7 @@ jobs: variants: ${{ matrix.configuration }} steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -95,14 +95,14 @@ jobs: python-version: "3.11" - name: Checkout build variables - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: secondlife/build-variables ref: master path: .build-variables - name: Checkout master-message-template - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: secondlife/master-message-template path: .master-message-template diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 790502eb8a..58dbcee131 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -58,7 +58,7 @@ jobs: echo "/usr/local/bin" >> $GITHUB_PATH echo "$(brew --prefix)/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 # Use apt-based Python when inside the Ubuntu 22.04 container - name: Install Python 3.11 (container case) if: matrix.container_image == 'ubuntu:22.04' @@ -185,12 +185,12 @@ jobs: shell: bash - name: Get the code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Checkout build vars (after the main code) - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: FirestormViewer/fs-build-variables path: build-variables @@ -515,7 +515,7 @@ jobs: if: always() steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: sparse-checkout: | fsutils/download_list.py diff --git a/.github/workflows/deploy_only.yml b/.github/workflows/deploy_only.yml index 376a0a9400..8cd0e08e89 100644 --- a/.github/workflows/deploy_only.yml +++ b/.github/workflows/deploy_only.yml @@ -31,7 +31,7 @@ jobs: contents: read steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: sparse-checkout: | fsutils/download_list.py diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index dcb64a3b29..73ec1c32e9 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -11,7 +11,7 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-python@v5 with: python-version: 3.x diff --git a/.github/workflows/tag-fs-build.yml b/.github/workflows/tag-fs-build.yml index bdb406b64d..5192eacbc5 100644 --- a/.github/workflows/tag-fs-build.yml +++ b/.github/workflows/tag-fs-build.yml @@ -50,7 +50,7 @@ jobs: steps: # Checkout the Repository - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 # Necessary to fetch all history for tagging From a21813339a4969741fb194962605dbba769535b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 18:29:37 +0000 Subject: [PATCH 07/74] Bump actions/download-artifact from 4 to 5 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yaml | 10 +++++----- .github/workflows/build_viewer.yml | 2 +- .github/workflows/sign.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4bf2af644a..6c318935bd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -369,13 +369,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Download viewer exe - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: Windows-app path: _artifacts - name: Download Windows Symbols if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: Windows-symbols - name: Extract viewer pdb @@ -405,7 +405,7 @@ jobs: steps: - name: Download Mac Symbols if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: macOS-symbols - name: Post Mac symbols @@ -425,11 +425,11 @@ jobs: runs-on: ubuntu-latest if: needs.setup.outputs.release_run steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: pattern: "*-installer" - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: pattern: "*-metadata" diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 790502eb8a..f78c0f6fc7 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -529,7 +529,7 @@ jobs: run: pip install discord-webhook - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 id: download with: path: to_deploy diff --git a/.github/workflows/sign.yml b/.github/workflows/sign.yml index 8766aa99d5..828f8fd6ad 100644 --- a/.github/workflows/sign.yml +++ b/.github/workflows/sign.yml @@ -86,7 +86,7 @@ jobs: shell: bash - name: Download Setup.exe Files Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: setup-exe-files path: setup_exe_files From 327fc9375f9ec0e2854f3c83d131ec9c4cd9fecb Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 1 Sep 2025 22:37:46 +0300 Subject: [PATCH 08/74] #4619 Don't crash on LLHUDEffect::render LLHUDEffectResetSkeleton needs to override LLHUDEffect::render to not cause an LL_ERRS if it stays alive for too long. --- indra/newview/llhudeffectresetskeleton.cpp | 9 +++++++++ indra/newview/llhudeffectresetskeleton.h | 13 +++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/indra/newview/llhudeffectresetskeleton.cpp b/indra/newview/llhudeffectresetskeleton.cpp index 31065a3e76..2bb5696f59 100644 --- a/indra/newview/llhudeffectresetskeleton.cpp +++ b/indra/newview/llhudeffectresetskeleton.cpp @@ -53,6 +53,15 @@ LLHUDEffectResetSkeleton::~LLHUDEffectResetSkeleton() { } +//----------------------------------------------------------------------------- +// packData() +//----------------------------------------------------------------------------- +void LLHUDEffectResetSkeleton::render() +{ + // HUDEffectResetSkeleton is a fake effect meant to reset skeleton only. + // Just wait for an update() call to do its work and then die. +} + //----------------------------------------------------------------------------- // packData() //----------------------------------------------------------------------------- diff --git a/indra/newview/llhudeffectresetskeleton.h b/indra/newview/llhudeffectresetskeleton.h index 39a6137054..c89516d7fc 100644 --- a/indra/newview/llhudeffectresetskeleton.h +++ b/indra/newview/llhudeffectresetskeleton.h @@ -38,20 +38,21 @@ class LLHUDEffectResetSkeleton final : public LLHUDEffect public: friend class LLHUDObject; - /*virtual*/ void markDead(); - /*virtual*/ void setSourceObject(LLViewerObject* objectp); + /*virtual*/ void markDead() override; + /*virtual*/ void setSourceObject(LLViewerObject* objectp) override; - void setTargetObject(LLViewerObject *objp); + void setTargetObject(LLViewerObject *objp) override; void setResetAnimations(bool enable){ mResetAnimations = enable; }; protected: LLHUDEffectResetSkeleton(const U8 type); ~LLHUDEffectResetSkeleton(); - /*virtual*/ void packData(LLMessageSystem *mesgsys); - /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); + void render() override; + void packData(LLMessageSystem *mesgsys) override; + void unpackData(LLMessageSystem *mesgsys, S32 blocknum) override; - void update(); + void update() override; private: bool mResetAnimations; }; From d1e185921dc182d25d3e9f35be23c8f17d3845cc Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 1 Sep 2025 22:56:58 +0300 Subject: [PATCH 09/74] #4621 Crash at LLMeshRepoThread::run(1060) Fix a missed mutex --- indra/newview/llmeshrepository.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 9e765bab82..161cab8ce1 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2417,6 +2417,7 @@ EMeshProcessingResult LLMeshRepoThread::headerReceived(const LLVolumeParams& mes } if (request_skin) { + LLMutexLock lock(mMutex); mSkinRequests.push_back(UUIDBasedRequest(mesh_id)); } } From e81b1de01e2b28f83cd2c85691428211bb9105e9 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 2 Sep 2025 00:21:21 +0300 Subject: [PATCH 10/74] Increment viewer version after 2024.06 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index b26a34e470..77f5bec5b2 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -7.2.1 +7.2.2 From 17f0ef8f997055affa45459a6ad0f4acc62f4379 Mon Sep 17 00:00:00 2001 From: chanayane Date: Wed, 3 Sep 2025 23:25:36 +0200 Subject: [PATCH 11/74] fix for macOS build --- indra/llui/llfolderviewmodel.h | 2 +- indra/newview/llwearableitemslist.cpp | 4 ++-- indra/newview/llwearableitemslist.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h index c971c70314..812063feda 100644 --- a/indra/llui/llfolderviewmodel.h +++ b/indra/llui/llfolderviewmodel.h @@ -378,7 +378,7 @@ protected: virtual bool hasParent() override { return mParent != NULL; } // - virtual LLFolderViewModelItem* getParent() const { return mParent; } + virtual LLFolderViewModelItem* getParent() const override { return mParent; } S32 mSortVersion; bool mPassedFilter; diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index ec4beff41f..b5f1622d7a 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -575,9 +575,9 @@ void FSPanelCOFWearableOutfitListItem::updateItemWeight(U32 item_weight) } //virtual -void FSPanelCOFWearableOutfitListItem::updateItem(const std::string& name, EItemState item_state) +void FSPanelCOFWearableOutfitListItem::updateItem(const std::string& name, bool favorite, EItemState item_state) { - LLPanelWearableOutfitItem::updateItem(name, item_state); + LLPanelWearableOutfitItem::updateItem(name, favorite, item_state); mWeightCtrl->setVisible(true); reshapeWidgets(); } diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index 57cb51e01f..263a04c86c 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -256,7 +256,7 @@ public: void updateItemWeight(U32 item_weight); - /*virtual*/ void updateItem(const std::string& name, EItemState item_state = IS_DEFAULT); + /*virtual*/ void updateItem(const std::string& name, bool favorite, EItemState item_state = IS_DEFAULT); /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); From d19c44310098865e3d7915b025511b34c1374822 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 3 Sep 2025 22:29:35 +0300 Subject: [PATCH 12/74] #4623 Shared Media on HUDs not loading Looks like a merge between a commit that affected mScreenPixelArea and a commit that added a return value resulted in reordered calls. --- indra/newview/llviewercamera.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index 963de67bdf..a86309754b 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -160,9 +160,9 @@ bool LLViewerCamera::updateCameraLocation(const LLVector3 ¢er, const LLVecto // update pixel meter ratio using default fov, not modified one mPixelMeterRatio = (F32)(getViewHeightInPixels()/ (2.f*tanf(mCameraFOVDefault*0.5f))); // update screen pixel area + mScreenPixelArea =(S32)((F32)getViewHeightInPixels() * ((F32)getViewHeightInPixels() * getAspect())); return true; - mScreenPixelArea =(S32)((F32)getViewHeightInPixels() * ((F32)getViewHeightInPixels() * getAspect())); } const LLMatrix4 &LLViewerCamera::getProjection() const From e88b9389edb46ddd4414d970ef92111c761057c5 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Thu, 4 Sep 2025 11:59:25 +0200 Subject: [PATCH 13/74] Updated Polish translation --- indra/newview/skins/default/xui/pl/floater_fs_poser.xml | 2 +- indra/newview/skins/default/xui/pl/floater_object_weights.xml | 2 +- indra/newview/skins/default/xui/pl/panel_preferences_colors.xml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/pl/floater_fs_poser.xml b/indra/newview/skins/default/xui/pl/floater_fs_poser.xml index 062f8a42cc..218afcc974 100644 --- a/indra/newview/skins/default/xui/pl/floater_fs_poser.xml +++ b/indra/newview/skins/default/xui/pl/floater_fs_poser.xml @@ -250,7 +250,7 @@ - +