diff --git a/autobuild.xml b/autobuild.xml index 51d2f59b8a..adf77d2156 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1008,11 +1008,11 @@ archive hash - c8024bad0445af488d355670ba13cc40 + 65d60415962cf65918c4fabe379ad43a hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.01.08-linux64-210441517.tar.bz2 + file:///opt/firestorm/fmodstudio-2.01.09-linux64-211101316.tar.bz2 name linux64 @@ -1022,11 +1022,11 @@ archive hash - c27de9c2f8c562551773a80399d6d037 + 215de14980a03774795de8cde24f1ad5 hash_algorithm md5 url - file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.08-windows-210431451.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.09-windows-211090925.tar.bz2 name windows @@ -1036,18 +1036,18 @@ archive hash - 29a66f79f7224cc17aa22d047853f7b0 + a55f9ae859a5a60285f0c6c764729194 hash_algorithm md5 url - file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.08-windows64-210431454.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.09-windows64-211090927.tar.bz2 name windows64 version - 2.01.08 + 2.01.09 fontconfig diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index cd2c6eb593..851bdb41af 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -574,7 +574,7 @@ std::string LLCacheName::buildFullName(const std::string& first, const std::stri std::string LLCacheName::cleanFullName(const std::string& full_name) { // FIRE-6659: Legacy "Resident" name toggle - return (LLAvatarName::trimResidentSurname() ? full_name : full_name.substr(0, full_name.find(" Resident"))); + return (!LLAvatarName::trimResidentSurname() ? full_name : full_name.substr(0, full_name.find(" Resident"))); // FIRE-6659: Legacy "Resident" name toggle } diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp index cc9ff7a487..82b0415624 100644 --- a/indra/llui/llscrolllistcolumn.cpp +++ b/indra/llui/llscrolllistcolumn.cpp @@ -257,7 +257,7 @@ void LLScrollColumnHeader::updateResizeBars() for (col = 0; col < mColumn->mParentCtrl->getNumColumns(); col++) { LLScrollListColumn* columnp = mColumn->mParentCtrl->getColumn(col); - if (columnp->mHeader && columnp->mHeader->canResize()) + if (columnp && columnp->mHeader && columnp->mHeader->canResize()) { num_resizable_columns++; } @@ -269,7 +269,7 @@ void LLScrollColumnHeader::updateResizeBars() for (col = 0; col < mColumn->mParentCtrl->getNumColumns(); col++) { LLScrollListColumn* columnp = mColumn->mParentCtrl->getColumn(col); - if (!columnp->mHeader) continue; + if (!columnp || !columnp->mHeader) continue; BOOL enable = num_resizable_columns >= 2 && num_resizers_enabled < (num_resizable_columns - 1) && columnp->mHeader->canResize(); columnp->mHeader->enableResizeBar(enable); if (enable) diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 71b5340d11..98c0919800 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -833,12 +833,12 @@ void LLScrollListCtrl::updateColumns(bool force_update) LLScrollColumnHeader* last_header = NULL; for (column_ordered_it = mColumnsIndexed.begin(); column_ordered_it != mColumnsIndexed.end(); ++column_ordered_it) { - if ((*column_ordered_it)->getWidth() < 0) + LLScrollListColumn* column = *column_ordered_it; + if (!column || column->getWidth() < 0) { // skip hidden columns continue; } - LLScrollListColumn* column = *column_ordered_it; if (column->mHeader) { diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 8866c39394..e1abaea839 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -125,6 +125,9 @@ public: /*virtual*/ void* getDirectInput8(); /*virtual*/ bool getInputDevices(U32 device_type_filter, void * di8_devices_callback, void* userdata); + + U32 getRawWParam() { return mRawWParam; } + protected: LLWindowWin32(LLWindowCallbacks* callbacks, const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 95ec93d823..a9afd3b72d 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -2074,6 +2074,10 @@ void LLEnvironment::coroRequestEnvironment(S32 parcel_id, LLEnvironment::environ { LL_WARNS("ENVIRONMENT") << "Couldn't retrieve environment settings for " << ((parcel_id == INVALID_PARCEL_ID) ? ("region!") : ("parcel!")) << LL_ENDL; } + else if (LLApp::isExiting()) + { + return; + } else { LLSD environment = result[KEY_ENVIRONMENT]; @@ -2163,6 +2167,10 @@ void LLEnvironment::coroUpdateEnvironment(S32 parcel_id, S32 track_no, UpdateInf notify = LLSD::emptyMap(); notify["FAIL_REASON"] = result["message"].asString(); } + else if (LLApp::isExiting()) + { + return; + } else { LLSD environment = result[KEY_ENVIRONMENT]; @@ -2225,6 +2233,10 @@ void LLEnvironment::coroResetEnvironment(S32 parcel_id, S32 track_no, environmen notify = LLSD::emptyMap(); notify["FAIL_REASON"] = result["message"].asString(); } + else if (LLApp::isExiting()) + { + return; + } else { LLSD environment = result[KEY_ENVIRONMENT]; diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index 1fb4b77094..df2c2dbcbd 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -1280,7 +1280,19 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, // group is not blocked, but we still need to check agent that sent the invitation // and we have no agent's id // Note: server sends username "first.last". - is_muted |= LLMuteList::getInstance()->isMuted(name); + // Fix broken mute check for avatars without last name: + // Names without last names are stored with capital first letter + // in the mute list, but they arrive here completely in lower case. + // So we need to change the first letter to upper case in order to + // make the mute check actually work. + //is_muted |= LLMuteList::getInstance()->isMuted(name); + std::string check_name(name); + if (!check_name.empty() && check_name.find('.') == std::string::npos) + { + check_name[0] = toupper(check_name[0]); + } + is_muted |= LLMuteList::getInstance()->isMuted(check_name); + // } if (is_do_not_disturb || is_muted) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index d09c6283c3..af40c6bc0c 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -237,6 +237,7 @@ #if LL_WINDOWS #include // For Unicode conversion methods +#include "llwindowwin32.h" // For AltGr handling #endif #include "utilitybar.h" // Support for the classic V1 style buttons in some skins @@ -3191,9 +3192,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) // of character handling. // Alt Gr can be additionally modified by Shift const MASK alt_gr = MASK_CONTROL | MASK_ALT; + LLWindowWin32 *window = static_cast(mWindow); + U32 raw_key = window->getRawWParam(); if ((mask & alt_gr) != 0 - && key >= 0x30 - && key <= 0x5A + && ((raw_key >= 0x30 && raw_key <= 0x5A) //0-9, plus normal chartacters + || (raw_key >= 0xBA && raw_key <= 0xE4)) // Misc/OEM characters that can be covered by AltGr, ex: -, =, ~ && (GetKeyState(VK_RMENU) & 0x8000) != 0 && (GetKeyState(VK_RCONTROL) & 0x8000) == 0) // ensure right control is not pressed, only left one { diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index b71591f5e5..13ae3186e7 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -91,7 +91,7 @@ Dummy Name replaced at run time - Appuyez sur une touche ou un bouton de la souris pour régler votre déclencheur.. + Appuyez sur une touche ou un bouton de la souris pour régler votre déclencheur. Saisie autorisée : [INPUT]. @@ -17,7 +17,7 @@ Saisie autorisée : [INPUT]. Appuyez sur une touche ou un bouton de la souris pour régler votre déclencheur. Saisie autorisée : [INPUT]. - +