diff options
| author | Erik Kundiman <erik@megapahit.org> | 2026-05-06 06:31:09 +0800 |
|---|---|---|
| committer | Erik Kundiman <erik@megapahit.org> | 2026-05-06 06:31:09 +0800 |
| commit | 9046c29deefe06be254747458218f3a5409db484 (patch) | |
| tree | 49a8b6bd48915542b21ddbfb3842d44d1fef2170 /indra | |
| parent | 1f6bf2ac2f9829102929cbda398e9fae824bf129 (diff) | |
| parent | b44809f740d307615526060e7b57e7705c292347 (diff) | |
Merge tag 'Second_Life_Release#b44809f7-26.2' into 2026.02
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llcommon/llapp.h | 2 | ||||
| -rw-r--r-- | indra/llcommon/llwatchdog.cpp | 9 | ||||
| -rw-r--r-- | indra/llui/llconsole.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llappviewerwin32.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llappviewerwin32.h | 2 | ||||
| -rw-r--r-- | indra/newview/lltoastnotifypanel.cpp | 46 | ||||
| -rw-r--r-- | indra/newview/lltoastnotifypanel.h | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/fonts.xml | 8 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/fonts.xml | 10 |
10 files changed, 74 insertions, 39 deletions
diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index fef7dc80b3..3a855bc480 100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h @@ -285,7 +285,7 @@ public: #ifdef LL_WINDOWS virtual bool reportCrashToBugsplat(void* pExcepInfo /*EXCEPTION_POINTERS*/) { return false; } - virtual bool reportCustomToBugsplat(const std::string& desription) { return false; } + virtual bool reportCustomToBugsplat(const std::string& description) { return false; } #endif public: diff --git a/indra/llcommon/llwatchdog.cpp b/indra/llcommon/llwatchdog.cpp index 1622aeb180..66b565c763 100644 --- a/indra/llcommon/llwatchdog.cpp +++ b/indra/llcommon/llwatchdog.cpp @@ -191,6 +191,7 @@ void LLWatchdog::remove(LLWatchdogEntry* e) { lockThread(); mSuspects.erase(e); + mFrozeList.erase(e); unlockThread(); } @@ -284,8 +285,9 @@ void LLWatchdog::run() // Sets watchdog marker file mCreateMarkerFnc(false); // If it's mainloop and it somehow recovers, it will re-add itself - mSuspects.erase(*result); - mFrozeList.insert(*result); + LLWatchdogEntry* froze_entry = *result; + mSuspects.erase(result); + mFrozeList.insert(froze_entry); LL_WARNS() << description << LL_ENDL; } else @@ -307,8 +309,9 @@ void LLWatchdog::run() mCreateMarkerFnc(false); // Already reported, don't report again. // If it's mainloop and it somehow recovers, it will re-add itself + LLWatchdogEntry* froze_entry = *result; mSuspects.erase(result); - mFrozeList.insert(*result); + mFrozeList.insert(froze_entry); } } } diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index 91e6f281da..ca512a9883 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -67,6 +67,10 @@ LLConsole::LLConsole(const LLConsole::Params& p) { setFontSize(p.font_size_index); } + if (mFont == nullptr) + { + setFontSize(0); // sans-serif + } mFadeTime = mLinePersistTime - FADE_DURATION; setMaxLines(LLUI::getInstance()->mSettingGroups["config"]->getS32("ConsoleMaxLines")); } @@ -79,6 +83,13 @@ void LLConsole::setLinePersistTime(F32 seconds) void LLConsole::reshape(S32 width, S32 height, bool called_from_parent) { + if (mFont == nullptr) + { + // not initialized yet + LL_WARNS() << "LLConsole::reshape called before font is set" << LL_ENDL; + return; + } + S32 new_width = llmax(50, llmin(getRect().getWidth(), width)); S32 new_height = llmax(mFont->getLineHeight() + 15, llmin(getRect().getHeight(), height)); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e2b917aa65..bfbb62423e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5936,6 +5936,17 @@ <key>Type</key> <string>S32</string> <key>Value</key> + <integer>90</integer> + </map> + <key>ScriptToastButtonWidth</key> + <map> + <key>Comment</key> + <string>Default width of buttons in the Script dialog toast.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> <integer>110</integer> </map> <key>NotificationChannelRightMargin</key> diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index e5fc256981..8975abffd7 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -123,7 +123,7 @@ namespace // MiniDmpSender pointer. As things stand, though, we must define an // actual function and store the pointer statically. static MiniDmpSender *sBugSplatSender = nullptr; - static std::string sBugsplatDesriptionField; + static std::string sBugsplatDescriptionField; bool bugsplatSendLog(UINT nCode, LPVOID lpVal1, LPVOID lpVal2) { @@ -160,15 +160,15 @@ namespace WCSTR(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "settings_per_account.xml"))); } - if (!sBugsplatDesriptionField.empty()) + if (!sBugsplatDescriptionField.empty()) { // Can be set by watchdog or other code that detects a problem // and wants to add some context to the crash report. // Will be visible in the BugSplat web UI. - sBugSplatSender->setDefaultUserDescription(WCSTR(LLError::getFatalMessage())); - // This type of crash is not nessesarily a crash, or final. + sBugSplatSender->setDefaultUserDescription(WCSTR(sBugsplatDescriptionField)); + // This type of crash is not necessarily a crash, or final. // Prepare for the next one. - sBugsplatDesriptionField.clear(); + sBugsplatDescriptionField.clear(); } else { @@ -894,7 +894,7 @@ bool LLAppViewerWin32::reportCustomToBugsplat(const std::string &description) #if defined(LL_BUGSPLAT) if (sBugSplatSender) { - sBugsplatDesriptionField = description; + sBugsplatDescriptionField = description; __try { diff --git a/indra/newview/llappviewerwin32.h b/indra/newview/llappviewerwin32.h index b31fa49cb2..53177f7f95 100644 --- a/indra/newview/llappviewerwin32.h +++ b/indra/newview/llappviewerwin32.h @@ -44,7 +44,7 @@ public: bool cleanup() override; bool reportCrashToBugsplat(void* pExcepInfo) override; - bool reportCustomToBugsplat(const std::string& desription) override; + bool reportCustomToBugsplat(const std::string& description) override; protected: bool initWindow() override; // Override to initialize the viewer's window. diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 846642841a..8a7095f8ca 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -46,7 +46,7 @@ const S32 BOTTOM_PAD = VPAD * 3; const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding -S32 BUTTON_WIDTH = 110; +const S32 BUTTON_WIDTH = 90; //static @@ -58,7 +58,8 @@ LLToastNotifyPanel::button_click_signal_t LLToastNotifyPanel::sButtonClickSignal LLToastNotifyPanel::LLToastNotifyPanel(const LLNotificationPtr& notification, const LLRect& rect, bool show_images) : LLCheckBoxToastPanel(notification) , LLInstanceTracker<LLToastNotifyPanel, LLUUID, LLInstanceTrackerReplaceOnCollision>(notification->getID()) -, mTextBox(NULL) +, mTextBox(NULL), + mButtonWidth(BUTTON_WIDTH) { init(rect, show_images); } @@ -69,9 +70,9 @@ void LLToastNotifyPanel::addDefaultButton() LLButton* ok_btn = createButton(form_element, false); LLRect new_btn_rect(ok_btn->getRect()); - new_btn_rect.setOriginAndSize(llabs(getRect().getWidth() - BUTTON_WIDTH)/ 2, BOTTOM_PAD, + new_btn_rect.setOriginAndSize(llabs(getRect().getWidth() - mButtonWidth) / 2, BOTTOM_PAD, //auto_size for ok button makes it very small, so let's make it wider - BUTTON_WIDTH, new_btn_rect.getHeight()); + mButtonWidth, new_btn_rect.getHeight()); ok_btn->setRect(new_btn_rect); addChild(ok_btn, -1); mNumButtons = 1; @@ -98,7 +99,7 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, bool is_opt p.font = font; p.rect.height = BTN_HEIGHT; p.click_callback.function(boost::bind(&LLToastNotifyPanel::onClickButton, userdata)); - p.rect.width = BUTTON_WIDTH; + p.rect.width = mButtonWidth; p.auto_resize = false; p.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM); p.enabled = !form_element.has("enabled") || form_element["enabled"].asBoolean(); @@ -108,7 +109,7 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, bool is_opt p.image_color_disabled(LLUIColorTable::instance().getColor("ButtonCautionImageColor")); } // for the scriptdialog buttons we use fixed button size. This is a limit! - if (!mIsScriptDialog && font->getWidth(form_element["text"].asString()) > (BUTTON_WIDTH-2*HPAD)) + if (!mIsScriptDialog && font->getWidth(form_element["text"].asString()) > (mButtonWidth - 2 * HPAD)) { p.rect.width = 1; p.auto_resize = true; @@ -273,7 +274,7 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) mInfoPanel = getChild<LLPanel>("info_panel"); mControlPanel = getChild<LLPanel>("control_panel"); - BUTTON_WIDTH = gSavedSettings.getS32("ToastButtonWidth"); + // customize panel's attributes // is it intended for displaying a tip? mIsTip = mNotification->getType() == "notifytip"; @@ -282,6 +283,10 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) // is it a script dialog? mIsScriptDialog = (notif_name == "ScriptDialog" || notif_name == "ScriptDialogGroup"); + static LLCachedControl<S32> btn_width(gSavedSettings, "ToastButtonWidth", 90); + static LLCachedControl<S32> script_button_width(gSavedSettings, "ScriptToastButtonWidth", 110); + mButtonWidth = mIsScriptDialog ? script_button_width : btn_width; + bool is_content_trusted = (notif_name != "LoadWebPage"); // is it a caution? // @@ -365,17 +370,20 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) S32 button_panel_width = mControlPanel->getRect().getWidth();// get initial width from XML S32 button_panel_height = mControlPanel->getRect().getHeight(); - // width for 3 columns: 3 buttons + 2 gaps - S32 min_width_required = 3 * BUTTON_WIDTH + 2 * (2 * HPAD); - if (min_width_required > button_panel_width) + // Script dialog has wider buttons so it requires wider layout to ensure proper spacing + if (mIsScriptDialog) { - button_panel_width = min_width_required; - S32 width_increase = button_panel_width - mControlPanel->getRect().getWidth(); - reshape(getRect().getWidth() + width_increase, getRect().getHeight()); - mInfoPanel->reshape(mInfoPanel->getRect().getWidth() + width_increase, mInfoPanel->getRect().getHeight()); - mTextBox->reshape(mTextBox->getRect().getWidth() + width_increase, mTextBox->getRect().getHeight()); + // width for 3 columns: 3 buttons + 2 gaps + S32 min_width_required = 3 * mButtonWidth + 2 * (2 * HPAD); + if (min_width_required > button_panel_width) + { + button_panel_width = min_width_required; + S32 width_increase = button_panel_width - mControlPanel->getRect().getWidth(); + reshape(getRect().getWidth() + width_increase, getRect().getHeight()); + mInfoPanel->reshape(mInfoPanel->getRect().getWidth() + width_increase, mInfoPanel->getRect().getHeight()); + mTextBox->reshape(mTextBox->getRect().getWidth() + width_increase, mTextBox->getRect().getHeight()); + } } - //try get an average h_pad to spread out buttons S32 h_pad = (button_panel_width - buttons_width) / (S32(buttons.size())); if(h_pad < 2*HPAD) @@ -385,8 +393,8 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) * for a scriptdialog toast h_pad can be < 2*HPAD if we have a lot of buttons. * In last case set default h_pad to avoid heaping of buttons */ - S32 button_per_row = button_panel_width / BUTTON_WIDTH; - h_pad = (button_panel_width % BUTTON_WIDTH) / (button_per_row - 1);// -1 because we do not need space after last button in a row + S32 button_per_row = button_panel_width / mButtonWidth; + h_pad = (button_panel_width % mButtonWidth) / (button_per_row - 1);// -1 because we do not need space after last button in a row if(h_pad < 2*HPAD) // still not enough space between buttons ? { h_pad = 2*HPAD; @@ -397,7 +405,7 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) // we are using default width for script buttons so we can determinate button_rows // to get a number of rows we divide the required width of the buttons to button_panel_width // buttons.size() is reduced by -2 due to presence of ignore button which is calculated independently a bit lower - S32 button_rows = llceil(F32(buttons.size() - 2) * (BUTTON_WIDTH + h_pad) / (button_panel_width + h_pad)); + S32 button_rows = llceil(F32(buttons.size() - 2) * (mButtonWidth + h_pad) / (button_panel_width + h_pad)); //reserve one row for the ignore_btn button_rows++; //calculate required panel height for scripdialog notification. diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h index d694513aba..71b9eaf8f5 100644 --- a/indra/newview/lltoastnotifypanel.h +++ b/indra/newview/lltoastnotifypanel.h @@ -134,6 +134,8 @@ protected: S32 mNumOptions { 0 }; S32 mNumButtons { 0 }; + S32 mButtonWidth; + static const std::string sFontDefault; static const std::string sFontScript; }; diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml index 3c6e100541..1ad01ee120 100644 --- a/indra/newview/skins/default/xui/en/fonts.xml +++ b/indra/newview/skins/default/xui/en/fonts.xml @@ -37,7 +37,7 @@ <font name="SansSerifBold" comment="Name of bold sans-serif font"> - <file load_collection="true" flags="bold" font_weight="600">InterVariableFont.ttf</file> + <file load_collection="true" flags="bold" font_weight="700">InterVariableFont.ttf</file> <file size_delta="-0.5">DejaVuSans-Bold.ttf</file> <os name="Windows"> <file>arialbd.ttf</file> @@ -64,7 +64,7 @@ name="SansSerif" comment="Name of bold sans-serif font" font_style="BOLD"> - <file load_collection="true" flags="bold" font_weight="600">InterVariableFont.ttf</file> + <file load_collection="true" flags="bold" font_weight="700">InterVariableFont.ttf</file> <file size_delta="-0.5">DejaVuSans-Bold.ttf</file> </font> @@ -80,7 +80,7 @@ name="SansSerif" comment="Name of bold italic sans-serif font" font_style="BOLD|ITALIC"> - <file load_collection="true" font_weight="800">InterItalicVariableFont.ttf</file> + <file load_collection="true" flags="bold" font_weight="700">InterItalicVariableFont.ttf</file> <file size_delta="-0.5">DejaVuSans-BoldOblique.ttf</file> </font> @@ -135,7 +135,7 @@ name="Helvetica" comment="Name of Helvetica font (bold)" font_style="BOLD"> - <file flags="bold" font_weight="800">InterVariableFont.ttf</file> + <file flags="bold" font_weight="700">InterVariableFont.ttf</file> <file size_delta="-0.5">DejaVuSans-Bold.ttf</file> <os name="Windows"> <file>arialbd.ttf</file> diff --git a/indra/newview/skins/default/xui/ja/fonts.xml b/indra/newview/skins/default/xui/ja/fonts.xml index 06922d2b02..7abb3593b6 100644 --- a/indra/newview/skins/default/xui/ja/fonts.xml +++ b/indra/newview/skins/default/xui/ja/fonts.xml @@ -80,7 +80,7 @@ <file> NotoSansCJKjp-Bold.otf </file> - <file load_collection="true" font_weight="800" flags="bold">InterVariableFont.ttf</file> + <file load_collection="true" font_weight="700" flags="bold">InterVariableFont.ttf</file> <os name="Windows"> <file load_collection="true"> YuGothB.ttc @@ -115,13 +115,13 @@ </os> </font> <font name="SansSerif" comment="Name of bold sans-serif font" font_style="BOLD"> - <file load_collection="true" font_weight="800" flags="bold">InterVariableFont.ttf</file> + <file load_collection="true" font_weight="700" flags="bold">InterVariableFont.ttf</file> </font> <font name="SansSerif" comment="Name of italic sans-serif font" font_style="ITALIC"> <file load_collection="true" font_weight="400">InterItalicVariableFont.ttf</file> </font> <font name="SansSerif" comment="Name of bold italic sans-serif font" font_style="BOLD|ITALIC"> - <file load_collection="true" flags="bold" font_weight="800">InterItalicVariableFont.ttf</file> + <file load_collection="true" flags="bold" font_weight="700">InterItalicVariableFont.ttf</file> </font> <font name="Monospace" comment="Name of monospace font"> <file> @@ -163,7 +163,7 @@ </os> </font> <font name="Helvetica" comment="Name of Helvetica font (bold)" font_style="BOLD"> - <file load_collection="true" font_weight="800" flags="bold">InterVariableFont.ttf</file> + <file load_collection="true" font_weight="700" flags="bold">InterVariableFont.ttf</file> <os name="Windows"> <file> arialbd.ttf @@ -189,7 +189,7 @@ </os> </font> <font name="Helvetica" comment="Name of Helvetica font (bold italic)" font_style="BOLD|ITALIC"> - <file load_collection="true" flags="bold" font_weight="800">InterItalicVariableFont.ttf</file> + <file load_collection="true" flags="bold" font_weight="700">InterItalicVariableFont.ttf</file> <os name="Windows"> <file> arialbi.ttf |
