From 8c393b49930d695529ffee48864bb5aae5e71693 Mon Sep 17 00:00:00 2001 From: daianakproductengine Date: Wed, 31 May 2017 19:55:38 +0300 Subject: [PATCH 01/14] MAINT-321 If Spin option is turned on, user cannot lift an object using Ctrl button + Mouse --- indra/newview/llfloatertools.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index b14b9b7578..5b7cfb242e 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -638,20 +638,22 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) // HACK - highlight buttons for next click mRadioGroupMove->setVisible(move_visible); - if (!gGrabBtnSpin && - !gGrabBtnVertical && - !(mask == MASK_VERTICAL) && - !(mask == MASK_SPIN) ) + if (!(gGrabBtnSpin || + gGrabBtnVertical || + (mask == MASK_VERTICAL) || + (mask == MASK_SPIN))) { mRadioGroupMove->setValue("radio move"); } - else if (gGrabBtnVertical || - (mask == MASK_VERTICAL) ) + else if ((mask == MASK_VERTICAL) || + gGrabBtnVertical && + (mask != MASK_SPIN)) { mRadioGroupMove->setValue("radio lift"); } - else if (gGrabBtnSpin || - (mask == MASK_SPIN) ) + else if ((mask == MASK_SPIN) || + gGrabBtnSpin && + (mask != MASK_VERTICAL)) { mRadioGroupMove->setValue("radio spin"); } From 19c3f47e00e348739eaf31685c8ea804704a08e5 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 31 May 2017 21:24:04 +0300 Subject: [PATCH 02/14] MAINT-7325 Fixed issue of images being marked as missing due to uninitialized discard level --- indra/newview/llviewertexture.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 6abd6f7b64..c162af371f 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1462,9 +1462,17 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/) } bool size_okay = true; - - U32 raw_width = mRawImage->getWidth() << mRawDiscardLevel; - U32 raw_height = mRawImage->getHeight() << mRawDiscardLevel; + + S32 discard_level = mRawDiscardLevel; + if (mRawDiscardLevel < 0) + { + LL_DEBUGS() << "Negative raw discard level when creating image: " << mRawDiscardLevel << LL_ENDL; + discard_level = 0; + } + + U32 raw_width = mRawImage->getWidth() << discard_level; + U32 raw_height = mRawImage->getHeight() << discard_level; + if( raw_width > MAX_IMAGE_SIZE || raw_height > MAX_IMAGE_SIZE ) { LL_INFOS() << "Width or height is greater than " << MAX_IMAGE_SIZE << ": (" << raw_width << "," << raw_height << ")" << LL_ENDL; From 13cddfdfdd8c42367af8a197e1f2deefc986495b Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 1 Jun 2017 15:30:49 +0300 Subject: [PATCH 03/14] Mac buildfix --- indra/newview/llfloatertools.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 5b7cfb242e..2869256d09 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -646,14 +646,12 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) mRadioGroupMove->setValue("radio move"); } else if ((mask == MASK_VERTICAL) || - gGrabBtnVertical && - (mask != MASK_SPIN)) + (gGrabBtnVertical && (mask != MASK_SPIN))) { mRadioGroupMove->setValue("radio lift"); } else if ((mask == MASK_SPIN) || - gGrabBtnSpin && - (mask != MASK_VERTICAL)) + (gGrabBtnSpin && (mask != MASK_VERTICAL))) { mRadioGroupMove->setValue("radio spin"); } From a8fffc7d172d3a786904e6d8e7e7c2943e6d54fc Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 30 May 2017 16:28:07 +0300 Subject: [PATCH 04/14] MAINT-731 Fixed Images Do Not Show at Proper Proportions --- indra/newview/llpreviewtexture.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 645a77e42a..54eeebda28 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -52,6 +52,8 @@ #include "llviewerwindow.h" #include "lllineeditor.h" +#include + const S32 CLIENT_RECT_VPAD = 4; const F32 SECONDS_TO_SHOW_FILE_SAVED_MSG = 8.f; @@ -579,7 +581,11 @@ void LLPreviewTexture::adjustAspectRatio() std::vector::const_iterator found = std::find(mRatiosList.begin(), mRatiosList.end(), ratio.str()); if (found == mRatiosList.end()) { - combo->setCurrentByIndex(0); + // No existing ratio found, create an element that will show image at original ratio + std::string ratio = boost::lexical_cast(num)+":" + boost::lexical_cast(denom); + mRatiosList.push_back(ratio); + combo->add(ratio); + combo->setCurrentByIndex(mRatiosList.size()- 1); } else { @@ -587,6 +593,15 @@ void LLPreviewTexture::adjustAspectRatio() } } } + else + { + // Aspect ratio was set to unconstrained or was clamped + LLComboBox* combo = getChild("combo_aspect_ratio"); + if (combo) + { + combo->setCurrentByIndex(0); //unconstrained + } + } mUpdateDimensions = TRUE; } From 045eebbccd7bb49021ddd17bdfb6967e2812d749 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Fri, 2 Jun 2017 19:38:04 +0300 Subject: [PATCH 05/14] MAINT-7459 Fixed incorrect 'Parcel owners can be more restrictive' checkbox focus behavior --- indra/newview/llfloaterregioninfo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 1af2c10a33..c330c2ae47 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -2290,6 +2290,8 @@ BOOL LLPanelEstateInfo::postBuild() getChild("parcel_access_override")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeAccessOverride, this)); + getChild("externally_visible_radio")->setFocus(TRUE); + return LLPanelRegionInfo::postBuild(); } From 81f4da646800e2a1b7218397290183144f6aed92 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 6 Jun 2017 12:47:51 +0300 Subject: [PATCH 06/14] MAINT-7447 FIXED Selecting a group ability refreshes the list and deselects your choice --- indra/llui/llscrolllistctrl.cpp | 15 +++++++++++++++ indra/llui/llscrolllistctrl.h | 2 ++ indra/newview/llpanelgrouproles.cpp | 28 ++++++++++++++++++---------- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 0afa8d43f1..7c1f4a4dca 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -345,6 +345,21 @@ S32 LLScrollListCtrl::getItemCount() const return mItemList.size(); } +BOOL LLScrollListCtrl::hasSelectedItem() const +{ + item_list::iterator iter; + for (iter = mItemList.begin(); iter < mItemList.end(); ) + { + LLScrollListItem* itemp = *iter; + if (itemp && itemp->getSelected()) + { + return TRUE; + } + iter++; + } + return FALSE; +} + // virtual LLScrolListInterface function (was deleteAllItems) void LLScrollListCtrl::clearRows() { diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 8343750a54..699a8744e1 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -201,6 +201,8 @@ public: virtual BOOL isSelected(const LLSD& value) const; + BOOL hasSelectedItem() const; + BOOL handleClick(S32 x, S32 y, MASK mask); BOOL selectFirstItem(); BOOL selectNthItem( S32 index ); diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 8440e9ee50..473451bdb6 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -2775,6 +2775,16 @@ void LLPanelGroupActionsSubTab::activate() LLPanelGroupSubTab::activate(); update(GC_ALL); + mActionDescription->clear(); + mActionList->deselectAllItems(); + mActionList->deleteAllItems(); + buildActionsList(mActionList, + GP_ALL_POWERS, + GP_ALL_POWERS, + NULL, + FALSE, + TRUE, + FALSE); } void LLPanelGroupActionsSubTab::deactivate() @@ -2803,19 +2813,17 @@ void LLPanelGroupActionsSubTab::update(LLGroupChange gc) if (mGroupID.isNull()) return; - mActionList->deselectAllItems(); mActionMembers->deleteAllItems(); mActionRoles->deleteAllItems(); - mActionDescription->clear(); - mActionList->deleteAllItems(); - buildActionsList(mActionList, - GP_ALL_POWERS, - GP_ALL_POWERS, - NULL, - FALSE, - TRUE, - FALSE); + if(mActionList->hasSelectedItem()) + { + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); + if (gdatap && gdatap->isMemberDataComplete() && gdatap->isRoleDataComplete()) + { + handleActionSelect(); + } + } } void LLPanelGroupActionsSubTab::handleActionSelect() From d700552b449f3c2bcaee46f61fe3290f57e58fe9 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 6 Jun 2017 12:51:16 +0300 Subject: [PATCH 07/14] MAINT-7458 FIXED Release notes opens every time after any problem with logining, until viewer will be relaunched. --- indra/newview/llstartup.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 33b6352bf5..1a480b1838 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2268,13 +2268,15 @@ void login_callback(S32 option, void *userdata) */ void show_release_notes_if_required() { - if (LLVersionInfo::getChannelAndVersion() != gLastRunVersion + static bool release_notes_shown = false; + if (!release_notes_shown && (LLVersionInfo::getChannelAndVersion() != gLastRunVersion) && LLVersionInfo::getViewerMaturity() != LLVersionInfo::TEST_VIEWER // don't show Release Notes for the test builds && gSavedSettings.getBOOL("UpdaterShowReleaseNotes") && !gSavedSettings.getBOOL("FirstLoginThisInstall")) { LLSD info(LLAppViewer::instance()->getViewerInfo()); LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]); + release_notes_shown = true; } } From d3a1c4cda49cc1b113abbdb175c557456581efac Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 6 Jun 2017 16:06:28 +0300 Subject: [PATCH 08/14] MAINT-7462 check pointer to avoid allocation crash in llpluginclassmedia --- indra/llplugin/llpluginclassmedia.cpp | 9 ++++++++- indra/newview/llviewermedia.cpp | 29 +++++++++++++++------------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index f1b6fe0a12..680017204c 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -224,7 +224,14 @@ void LLPluginClassMedia::idle(void) void *addr = mPlugin->getSharedMemoryAddress(mTextureSharedMemoryName); // clear texture memory to avoid random screen visual fuzz from uninitialized texture data - memset( addr, 0x00, newsize ); + if (addr) + { + memset( addr, 0x00, newsize ); + } + else + { + LL_WARNS("Plugin") << "Failed to get previously created shared memory address: " << mTextureSharedMemoryName << " size: " << mTextureSharedMemorySize << LL_ENDL; + } // We could do this to force an update, but textureValid() will still be returning false until the first roundtrip to the plugin, // so it may not be worthwhile. diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 9f05ee61bd..01b0dd0077 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -3052,20 +3052,23 @@ void LLViewerMediaImpl::update() data = mMediaSource->getBitsData(); } - // Offset the pixels pointer to match x_pos and y_pos - data += ( x_pos * mMediaSource->getTextureDepth() * mMediaSource->getBitsWidth() ); - data += ( y_pos * mMediaSource->getTextureDepth() ); - + if(data != NULL) { - LL_RECORD_BLOCK_TIME(FTM_MEDIA_SET_SUBIMAGE); - placeholder_image->setSubImage( - data, - mMediaSource->getBitsWidth(), - mMediaSource->getBitsHeight(), - x_pos, - y_pos, - width, - height); + // Offset the pixels pointer to match x_pos and y_pos + data += ( x_pos * mMediaSource->getTextureDepth() * mMediaSource->getBitsWidth() ); + data += ( y_pos * mMediaSource->getTextureDepth() ); + + { + LL_RECORD_BLOCK_TIME(FTM_MEDIA_SET_SUBIMAGE); + placeholder_image->setSubImage( + data, + mMediaSource->getBitsWidth(), + mMediaSource->getBitsHeight(), + x_pos, + y_pos, + width, + height); + } } } From 95d0da56fda169a7cce34e07f8ae76f86dce42c0 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Wed, 7 Jun 2017 18:56:24 +0300 Subject: [PATCH 09/14] MAINT-7447 restore filter functionality in Abilities tab --- indra/newview/llpanelgroup.h | 2 ++ indra/newview/llpanelgrouproles.cpp | 15 +++++++++++++++ indra/newview/llpanelgrouproles.h | 1 + 3 files changed, 18 insertions(+) diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 0e6f5b8924..05be4b5aee 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -164,6 +164,8 @@ public: virtual void setupCtrls (LLPanel* parent) {}; + virtual void onFilterChanged() { } + protected: LLUUID mGroupID; BOOL mAllowEdit; diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 473451bdb6..78270c20bb 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -494,6 +494,7 @@ void LLPanelGroupSubTab::setSearchFilter(const std::string& filter) mSearchFilter = filter; LLStringUtil::toLower(mSearchFilter); update(GC_ALL); + onFilterChanged(); } void LLPanelGroupSubTab::activate() @@ -2826,6 +2827,20 @@ void LLPanelGroupActionsSubTab::update(LLGroupChange gc) } } +void LLPanelGroupActionsSubTab::onFilterChanged() +{ + mActionDescription->clear(); + mActionList->deselectAllItems(); + mActionList->deleteAllItems(); + buildActionsList(mActionList, + GP_ALL_POWERS, + GP_ALL_POWERS, + NULL, + FALSE, + TRUE, + FALSE); +} + void LLPanelGroupActionsSubTab::handleActionSelect() { mActionMembers->deleteAllItems(); diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index 9a696124a8..1d1d69e0ae 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -311,6 +311,7 @@ public: virtual bool needsApply(std::string& mesg); virtual bool apply(std::string& mesg); virtual void update(LLGroupChange gc); + virtual void onFilterChanged(); void handleActionSelect(); From 47ae78f8cfc9ca71bf9837b06618d34737b07fc4 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 7 Jun 2017 16:21:40 +0300 Subject: [PATCH 10/14] MAINT-7461 Fixed images not showing at correct proportions when opened for the first time --- indra/newview/llpreviewtexture.cpp | 64 +++++++++++++++++++----------- indra/newview/llpreviewtexture.h | 1 + 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 54eeebda28..12bcd89cb0 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -100,6 +100,29 @@ LLPreviewTexture::~LLPreviewTexture() } } +void LLPreviewTexture::populateRatioList() +{ + // Fill in ratios list with common aspect ratio values + mRatiosList.clear(); + mRatiosList.push_back(LLTrans::getString("Unconstrained")); + mRatiosList.push_back("1:1"); + mRatiosList.push_back("4:3"); + mRatiosList.push_back("10:7"); + mRatiosList.push_back("3:2"); + mRatiosList.push_back("16:10"); + mRatiosList.push_back("16:9"); + mRatiosList.push_back("2:1"); + + // Now fill combo box with provided list + LLComboBox* combo = getChild("combo_aspect_ratio"); + combo->removeall(); + + for (std::vector::const_iterator it = mRatiosList.begin(); it != mRatiosList.end(); ++it) + { + combo->add(*it); + } +} + // virtual BOOL LLPreviewTexture::postBuild() { @@ -140,27 +163,12 @@ BOOL LLPreviewTexture::postBuild() } } - // Fill in ratios list with common aspect ratio values - mRatiosList.clear(); - mRatiosList.push_back(LLTrans::getString("Unconstrained")); - mRatiosList.push_back("1:1"); - mRatiosList.push_back("4:3"); - mRatiosList.push_back("10:7"); - mRatiosList.push_back("3:2"); - mRatiosList.push_back("16:10"); - mRatiosList.push_back("16:9"); - mRatiosList.push_back("2:1"); - - // Now fill combo box with provided list - LLComboBox* combo = getChild("combo_aspect_ratio"); - combo->removeall(); - - for (std::vector::const_iterator it = mRatiosList.begin(); it != mRatiosList.end(); ++it) - { - combo->add(*it); - } + // Fill in ratios list and combo box with common aspect ratio values + populateRatioList(); childSetCommitCallback("combo_aspect_ratio", onAspectRatioCommit, this); + + LLComboBox* combo = getChild("combo_aspect_ratio"); combo->setCurrentByIndex(0); return LLPreview::postBuild(); @@ -446,16 +454,25 @@ void LLPreviewTexture::updateDimensions() return; } - if (mAssetStatus != PREVIEW_ASSET_LOADED) + S32 img_width = mImage->getFullWidth(); + S32 img_height = mImage->getFullHeight(); + + if (mAssetStatus != PREVIEW_ASSET_LOADED + || mLastWidth != img_width + || mLastHeight != img_height) { mAssetStatus = PREVIEW_ASSET_LOADED; // Asset has been fully loaded, adjust aspect ratio adjustAspectRatio(); } - + + // Update the width/height display every time - getChild("dimensions")->setTextArg("[WIDTH]", llformat("%d", mImage->getFullWidth())); - getChild("dimensions")->setTextArg("[HEIGHT]", llformat("%d", mImage->getFullHeight())); + getChild("dimensions")->setTextArg("[WIDTH]", llformat("%d", img_width)); + getChild("dimensions")->setTextArg("[HEIGHT]", llformat("%d", img_height)); + + mLastHeight = img_height; + mLastWidth = img_width; // Reshape the floater only when required if (mUpdateDimensions) @@ -582,6 +599,7 @@ void LLPreviewTexture::adjustAspectRatio() if (found == mRatiosList.end()) { // No existing ratio found, create an element that will show image at original ratio + populateRatioList(); // makes sure previous custom ratio is cleared std::string ratio = boost::lexical_cast(num)+":" + boost::lexical_cast(denom); mRatiosList.push_back(ratio); combo->add(ratio); diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h index b104a91c75..c156c48d0c 100644 --- a/indra/newview/llpreviewtexture.h +++ b/indra/newview/llpreviewtexture.h @@ -67,6 +67,7 @@ public: /*virtual*/ void setObjectID(const LLUUID& object_id); protected: void init(); + void populateRatioList(); /* virtual */ BOOL postBuild(); bool setAspectRatio(const F32 width, const F32 height); static void onAspectRatioCommit(LLUICtrl*,void* userdata); From d7edeb2df8b225c39727bf506b4e5126852e2d5d Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Fri, 2 Jun 2017 16:44:00 +0200 Subject: [PATCH 11/14] STORM-2149: Add a warning notification when deleting a folder of filtered content --- doc/contributions.txt | 1 + indra/llui/llfolderview.cpp | 12 +++++++ indra/llui/llfolderview.h | 12 +++++++ indra/llui/llfolderviewitem.cpp | 5 +++ indra/llui/llnotifications.cpp | 6 ++++ indra/llui/llnotifications.h | 2 ++ indra/newview/llinventoryfunctions.cpp | 33 ++++++++++++++----- .../skins/default/xui/en/notifications.xml | 16 +++++++++ 8 files changed, 78 insertions(+), 9 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index e4b24b3abe..1d591e2ec2 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -822,6 +822,7 @@ Kitty Barnett MAINT-6153 MAINT-6154 MAINT-6568 + STORM-2149 Kolor Fall Komiko Okamoto Korvel Noh diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index f9664e0658..895753aeae 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -102,6 +102,18 @@ void LLCloseAllFoldersFunctor::doFolder(LLFolderViewFolder* folder) void LLCloseAllFoldersFunctor::doItem(LLFolderViewItem* item) { } +//--------------------------------------------------------------------------- + +void LLAllDescendentsPassedFilter::doFolder(LLFolderViewFolder* folder) +{ + mAllDescendentsPassedFilter &= (folder) && (folder->passedFilter()) && (folder->descendantsPassedFilter()); +} + +void LLAllDescendentsPassedFilter::doItem(LLFolderViewItem* item) +{ + mAllDescendentsPassedFilter &= (item) && (item->passedFilter()); +} + ///---------------------------------------------------------------------------- /// Class LLFolderViewScrollContainer ///---------------------------------------------------------------------------- diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h index b5deefd653..2926e160d0 100644 --- a/indra/llui/llfolderview.h +++ b/indra/llui/llfolderview.h @@ -400,6 +400,18 @@ public: virtual void doItem(LLFolderViewItem* item); }; +class LLAllDescendentsPassedFilter : public LLFolderViewFunctor +{ +public: + LLAllDescendentsPassedFilter() : mAllDescendentsPassedFilter(true) {} + /*virtual*/ ~LLAllDescendentsPassedFilter() {} + /*virtual*/ void doFolder(LLFolderViewFolder* folder); + /*virtual*/ void doItem(LLFolderViewItem* item); + bool allDescendentsPassedFilter() const { return mAllDescendentsPassedFilter; } +protected: + bool mAllDescendentsPassedFilter; +}; + // Flags for buildContextMenu() const U32 SUPPRESS_OPEN_ITEM = 0x1; const U32 FIRST_SELECTED_ITEM = 0x2; diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 3d618548c4..0510e472c5 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -1176,6 +1176,11 @@ BOOL LLFolderViewFolder::needsArrange() return mLastArrangeGeneration < getRoot()->getArrangeGeneration(); } +bool LLFolderViewFolder::descendantsPassedFilter(S32 filter_generation) +{ + return getViewModelItem()->descendantsPassedFilter(filter_generation); +} + // Passes selection information on to children and record selection // information if necessary. BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem, diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index c364c4d5ae..d40347de13 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1798,6 +1798,12 @@ bool LLNotifications::getIgnoreAllNotifications() { return mIgnoreAllNotifications; } + +bool LLNotifications::getIgnored(const std::string& name) +{ + LLNotificationTemplatePtr templatep = getTemplate(name); + return (mIgnoreAllNotifications) || ( (templatep->mForm->getIgnoreType() != LLNotificationForm::IGNORE_NO) && (templatep->mForm->getIgnored()) ); +} bool LLNotifications::isVisibleByRules(LLNotificationPtr n) { diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 4a701d0ca7..a7a5490432 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -964,6 +964,8 @@ public: void setIgnoreAllNotifications(bool ignore); bool getIgnoreAllNotifications(); + bool getIgnored(const std::string& name); + bool isVisibleByRules(LLNotificationPtr pNotification); private: diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 2bb6fb853c..90d6e9b8a8 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -2297,15 +2297,12 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root if ("delete" == action) { - LLSD args; - args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); static bool sDisplayedAtSession = false; - std::set::iterator set_iter = selected_items.begin(); - LLFolderViewModelItemInventory * viewModel = NULL; + bool has_folder_items = false; - for (; set_iter != selected_items.end(); ++set_iter) + for (std::set::iterator set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) { - viewModel = dynamic_cast((*set_iter)->getViewModelItem()); + LLFolderViewModelItemInventory * viewModel = dynamic_cast((*set_iter)->getViewModelItem()); if (viewModel && viewModel->hasChildren()) { has_folder_items = true; @@ -2317,16 +2314,34 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root bool ignore = !(LLUI::sSettingGroups["ignores"]->getBOOL("DeleteItems")); if (ignore) { - if (!sDisplayedAtSession) { LLUI::sSettingGroups["ignores"]->setBOOL("DeleteItems", TRUE); sDisplayedAtSession = true; } - } } - LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle())); + + LLAllDescendentsPassedFilter f; + for (std::set::iterator it = selected_items.begin(); (it != selected_items.end()) && (f.allDescendentsPassedFilter()); ++it) + { + if (LLFolderViewFolder* folder = dynamic_cast(*it)) + { + folder->applyFunctorRecursively(f); + } + } + + // Fall through to the generic confirmation if the user choose to ignore the specialized one + if ( (!f.allDescendentsPassedFilter()) && (!LLNotifications::instance().getIgnored("DeleteFilteredItems")) ) + { + LLNotificationsUtil::add("DeleteFilteredItems", LLSD(), LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle())); + } + else + { + LLSD args; + args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); + LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle())); + } // Note: marketplace listings will be updated in the callback if delete confirmed return; } diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 16bf0e344d..97f614cf62 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6010,6 +6010,22 @@ You cannot undo this action. notext="Cancel" yestext="OK"/> + + + + Your inventory is currently filtered and not all of the items you're about to delete are currently visible. + +Are you sure you want to delete them? + confirm + + Date: Wed, 7 Jun 2017 12:51:41 -0700 Subject: [PATCH 12/14] FIX MAINT-7456 Viewer Windows installer translation update for 9 languages --- indra/newview/installers/windows/lang_de.nsi | Bin 8420 -> 9850 bytes indra/newview/installers/windows/lang_es.nsi | Bin 8458 -> 9884 bytes indra/newview/installers/windows/lang_fr.nsi | Bin 8748 -> 10258 bytes indra/newview/installers/windows/lang_it.nsi | Bin 8102 -> 9520 bytes indra/newview/installers/windows/lang_ja.nsi | Bin 6514 -> 7204 bytes .../newview/installers/windows/lang_pt-br.nsi | Bin 8522 -> 9864 bytes indra/newview/installers/windows/lang_ru.nsi | Bin 7898 -> 9190 bytes indra/newview/installers/windows/lang_tr.nsi | Bin 8006 -> 9286 bytes indra/newview/installers/windows/lang_zh.nsi | Bin 6576 -> 6846 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi index 866accae99b5e59615fc5758d19617ad43fb6d69..2a868acc89cd7b516ff07df69df5b95630dc442f 100644 GIT binary patch delta 1351 zcmb_cziU%b82zMbY)L{i{gGOd+_uIb*pv>u=GUWXBFRgoE?GMX z_5KBdn}|YJ2RrEI;N&cHb#;&op7Y&QYDJ3Ra^HRLem~B4&bjY!;m6|JTzF(aQ-SOZ!He}siJU1~}#c55x zql=G$98aza2f(|1lOF39<-Rd>&CE>GK!vEeLrVm_6k zEt+Z&XX+!(3NT7DG!ZYMV@m=3vZ#F#%Yay#_PEM@%Tq4OM4KD48_pgxti_^t@v zSDr#|b_-;@p2A4ldy}u-z8r_axyFsBHzX{5HRN4GwWe?8|K(riHVG#?Y7I{*a_5%D zJeOA$59aI(8o9_WKt*#0wtN^vzE!GnDh#&?jjRtlEeJ*|meUEnR3; z@wKEAX|}EZ5c&>e4Sclnt+WMSv~sQYF02-1UYzsSmBRfr6NFU`rrMfz+*prSj&UY|A73wSVjbyHY`6>_gnM zvXlYelH6H^Q0pg-+|fDP&pq*EqqL#grUVY4!L$jkPMXIv^XX5rVQoBEb=wucd(#4;QQbrVPSi+7rm{P7Vy_3+}h~#f`%TJF5frm|bAX`$x_fXbk zCyG-;1Qyba{w$*^dnkqc;SD)RY8+S!#QLr|yp-*e3ce-75p?b<+oE*~89Ko3&r?!| zPsUR+j&fipNKPNNA$FRF_FcQOi=1Fx!KI7T8uA0-9Wa~x9xtG3b@t>4w;UM)ti!53 zY}p_LpT%;3sKtTBy-BC?w+Mjpo>RbdsmorgKl%xgaK{{GGbug-Ept0{bB-j7$rfPe z!9QhD6jQvO87$?#PW01qR#tHFHwKUobtJ}6ZCmO-Bt4r-h>npFOh{iI4mF3kjvLA= z&{ev6NRJ<71PtY`LWy;2vpsofPpom|n7GnK5(^GW%@ilI1@f6Eju{D=O!Pj^OtU2G zW;n6XA15X)`54kOqv%`1=v7NOqQ#RE;5ZEIfy(uLa`6PxoAz9JF-FV2#p7hW)Q10` Ube3b*oREcAlE}v_T$CH~8wk%&y#N3J delta 600 zcmZuvJxjw-6g@iVA{DWIK%u;VqZV{>wbemTC`6rHVj68RP13ZfWa=oozSSQgSMe>wW=yWgGkhmuTZG)jF2o*rv$BebumX!9#+HS|#U^g6!yG(W zhIP@zu-GG=Zc6F*_DlMx`<^y6_4Xi#SSO@c{m?zAORer1Uw?EDWEwdUYXn}%3N!bC zv8tcWJ=BBrh@S08>eBiCo$a1vqDJV1;YkI{gMn`XxG*7gmRzR5(4+DVztnM!Hbd0q zIo=AmHwcel%l7~&GkAzady+mWbMhEpYvZoqDS|3F58#@P7qF(~hK%5BnTnN-D}pT` zKn}kl?3i0;b;|}Ii4)59fVMS_NK4eTn^iU+1QR` zj{Df?SAE@@O8<6j#NQcoI+|-;(k{24d|F$Onmj--sX#WNy#~o9?kpq$vdnztoU=3~ zobq^~d>OhNJ0FYxN;xB=m$FoE8#ak}117$_zz$A0w$po(S2)t~wt>r2uwW07p?U11 zK=0!Yn7Y?Fy!fY%Z47FF`0UxE9g;Qmv$Mb?juSx%6T-XhUQE}*|I(#@#}IeoUDGZE N`>(C&w2aA+`~oY(S=Imm delta 608 zcmZ8eK}y3=5Pb+z6>ZUgh($?77h-f#ynz*5xCpema#PdP6w@?qla{*a8T4B7w}GH#2YE%)GgumFe2nSppj^^!e|>hldW@v=JKoH;5)gB$gsl z-=%|bq_Kce8zJh9`>Yn0K3_cy$mZ#2%&3QFMw;a4(T-?S{pujr*;3zPwV~u-!Wt8$c}M~q0w(nBIh|?LX5(lsLS8b4NUY;glSs{oSck%7z(Bp` zEH&FWRL%U2<&xWHu8d<-F0J~?mrl(hM6BVW7*nnDmR6y*3q>_s-&gj|Wi~0?=f;aE zM4G2(igcOyA|;|2*IDy~r`)~B?XpKLaPqqAgJ!oGabE>efE z9QWTjnN}q#Czl=FGONj1KUPo9E5!cJCGBO4BG2r=RG7o1tmy7q>ZMp#lY)~?_cn9c I`_a$JFUOgD&;S4c diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi index a456e6e417245359990b607df0bea13ccedf4455..1d2e150525176efdcc6528898e8e012a019bebd1 100644 GIT binary patch delta 1547 zcma)6O-~b16un6)P*PASP?1g;4Y3Od39vM#8tp<15h%Da#-W{-32mpD0tPqp8_Y}G zndruq3k*9q#-$s713!R;TX&vwUnhJSG%uaLcR$YkI`4fd9WEcf%+6LM5Lc=aN?W?v zH>8QL2U$%up6p{$5}A(^j_JF8GZjeFe9Jm<2lC&rjKl|m4}@KOt!Gy{iW$fjtePtC z;2S~DvkTM^5qBX8abj$qd}(R)5dO6GAPdxX9#%8*0#RIfMBgzv!L|+)8@vYLobd*n z`(36h$MOLnHbp{vXHsFBHb5O-kp{Kt&ztXQ$9x`MzP72M*^W0@p2>{dPOFc3+m|z) zTm4J6kcuYCCNU3JRuO4O@&D4Eqt-~ZKVFkPm@+BW&hEF6&K}OTL+l+p<0IuQ1#LsZ z$~h0(FwkDF7pt<_L!m_%@(vcuviKFLNLdzT4%#+6t26j?vDl>mhDk3h{Mm88OS>6Y zo&z$Jz^qK=&HC8r(ee1t{sj*JEYrqdMlBdIJ7(6!eSr#Q++EDG~8^CIkTaaj3)4sNiRoX~_&dze#15wz}wqnxed{(tZB-F&>1*_s) zm2GVp+vQ^KsRIXF#9j+Cr6I?Bot!WyxxzU8>~*2NWp!X4PEV%WXmf}Xr_8JL;IxPK zG&Ge6Se$cH{pb&L6Q}d}#p@MR0BR@LG7ja(h$R9~2H4y*+ delta 599 zcmZ8fO-lk%6g>n=3oT^O(vYTTX%qAZBrGB~4Op9q!bVL=XKX$USJiKL|Dm%#Xy&HYC|Dt}Z*-01jG67B!!yx1B)dmm(Lg>mPnFe2 zwr<$uXww&HyhyA%SlK#`I~J`mcB~~qTj-b^4c7V?kv&#r6VJgNyV_Q#Mp>0|mbxfZ z)Mt8GJ>^O>d-XN-_}A({r%U6m79nqGz@=bWOqcJGjx_nI!Nxi5?=X04@H@gjZvn?W zkwmc!S{&P>6Tsp+b&G?T+FL)!`!o2a!9CTk3uQ)7D@4R54lK=n! diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi index 5b1c5f4ce9b11d0f42c89e6c4ace62ddd33d533c..1bd6526670c1ffacbecc3a3b7c789fb88ff92b15 100644 GIT binary patch delta 1210 zcmcIkO-NKx82uCjH4G9F(d%y4A^L^hr=e@6$Q-^29 zbE9|g1}pfEr?`c0n87UOxL$+_@z3~7+-L3uWAk{7yYRyhm-ytI1jUqgF~lxi(!q!! zaoq6Ohnq157djD#4NJ}#8Zm@sWMZ$J;*Ha&;8XM`>Jh|k!RI=nx&)Zg$kz;a_<;fW;+Hw1%lMcAoHd2W*6Wn6~M**?C}T}s>3 zd!O?;d3t~)a;9e9#8jGF?3<)o=VA<1P1y|@QIgO~^_0dNaBPYuT%cc+VV`LuwIW7I zCRr?9dDXZAN;#lnbi!l9FhZEd2O`W;%Jos=c;{&HG;%x}9Dj_PrJQT^73@y56c%M# zLj~Et_LA_Nz-T?M$8yL)+x`cUxD)(Ea4`_YjSFKEO)w_oOcKdzyn>E+0uP|% zBA&$)_`RM41Ioa3_p4V`uU_~2&UfYGEuWlN-<-8A<{w$p>ejP+)~+@9H$eL!iVeV= z9l;eZ_IL!>5m%&dEpTTYtFg}*4qg-fkgU3ohD7Uj2k(ZwC}A^VGk~N*p{J`ro1(X1 zF>y6((yDA5b_sq)t4#7EYlqMI<{k2#36mH%spcDzT_ZCSp`AvHZL1G_?TaXB1lU8_ z?=&I8dI*W&Nx*tKS6EB07EY6ZwoOn?=olbdFQ}#BJ!Ht!b3`;?X@IGhVrZn=MEd{E zRmqrjE`TrR&|n42r=Nx6aj^KBOMczZjCJo#*SFJIBXyCZYi@BK`bdq_z6Hpe^{Z-C zJG2T|%s?R@S48HfXUTI_pM5S5HYfq>Mf`ay>GSexx>R)AWl|0(HN9%J)D=il_PX@y Ybe1y%YVBJ3w6Zt;D!$~#l~QT`2Xk?Q@Bjb+ diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi index 9ef252d2324343f40939e33574b079afc3a45d66..87032fec181b3e23ab87cff5b12c5d8e600c5644 100644 GIT binary patch delta 1549 zcmb_cO=}ZT6unZ~YOP5mrly1>qln$qKm=D21KJ9q1|_j>bTj!dO`Dn2Nm7X}f;+eJ zet@`fDMJ5(D}RI#Tomitg&Xyp`!d8Lx=+at_x}3x^4kxKqlz@8E?x03 z`qB_rE=dn_M+VZDwsi14!ES(^F1}sNY2R0yhW=?E$Q~>YaMFX72dlQuTv!gU3UL~W zV*gcXnvL1)h`7WU=tw`J6N52#6`fJrSow;TlMC_y^Ac=(is;HV{F#3sWBB=#I88kg@X6a(uQo60D4Cf;R z(`1{2{qIZn=L;^-cHrDsumJcTW_ucSfHP*kg3-~Au@8%`By7US<<1X4C=ZR8yh7Yx1d-$IM-1 zPyAx2l7R;rv^1YW>m7ht!qwOdcyh~aMneZ zhnSIMGHB&z>#;HHZqMSH;_Nx|E*Xp4+rv9WuGHInj;CgD%gxtlIv;9>b|HdQ*7Ww0 zC#plM+An2}&5TaTf)wELrxw$#g>)G( zqociJs^rEhm6%6M<5jVpb8*}F#<7F8Q{BJOO$~r-NL^WC=rF*qf&Wn;3$Enkys)1? E0LZL3y8r+H delta 598 zcmZuvyGjF55IxwWh{PhqXWF2?#!JtXU^>7+56G!=lsqo25{)0&of1c013LZFZAYGdDy@X-Bk~c?o*3a zVYTdCDJ|ET4f#%^I8vqcPsOr-DV1uu6e62rMaJcSDH=B1Op1Cg#bkYZF?ole{oI%NL2Qkm>8ofIYq)$h3rRTgU0n`vp^JeDVcR$X(=e&L@d|f?$(>rZ6r}G-ju4(@SEYmqU*|M~ch*^R zsIkr*@B&JB`L0SDRYF&5wH?iKPt(}_9+824E!hTG1h_zF9mGX6SJfG@&tfV2t?zCu zZr^t%$1hGG2j{?{JDq{Y2~4tc-(lbs*MYi%36xRB$O@hXe3$5%;9MS}=Z0*`z8s?W z8JV!(2dXDO`-85*0FEJo`7ERLik*wk+T(%v==mZ04s#W$GHUGjaH5j~HTG?Mymt}+ z%h9;(>yeR@AMs3gx{f-#m~s;}jXakvd5W)BcpG_%vn|-B91ojPhgaPeQ&YCl)7QP! z-nUY@M=ZE}mL5A!d0ub3J}Y3!L-*v5++@%K`(J`J4|`Q_qFRWiYM77b)KGOEA@nxd zD&jO!MfAJ_97am;_*1vc6X>!dj=GF07Lb)=BdK{rQ5{@o2#n0@J?PVOSg0D}HBwR2 z1;7Zm>7kJ^Hkw763g+xPh#5RfaQD?G*jsFc;$kpm%M?-jHF!qE`vBO!7^HrTBFO@p zku;vXR2&cG42j#1JwqqMsSh2kez_tGNPih;Wblc*IZZHk1n*r~jvRwc+$nNsuxr9+ z4?hFGcM!4d>>KbkP~aARn{FA|a9Q@HxdkK@mJqRr)x^4wbslIHd%&~@y*KRVnBtG%qM%NvcuFb%JmxT2UVToPav*Ia*~6YU jm^=hdgp@*F|3gUB>ED!ed0CQwK|B8}o!DryV?urbuGrg7 delta 497 zcmZut!AiqG6nvG%g3?lGD&%5T@!+XOEFLT^qKMdw1racnAVX46+$HqsxUN2oGl_xZ|&|#U9--iFuO(Q!qCF zOblZRMiT5r`pI^*Rq9N;*bjj4=OoPM^%5M+tKfj+yMVrrEe_)^Hr~ipL*x4Y(9TQ@ z^U%6r;n3=|P9<8>AJwY9sx-1rxxH9u=@)CKyeHb?0B2vg;#53WtfDI-rRRT&OPT&jvgIteEN35d?}Yp4QX1A zELvMuAfBYME1|LM%94ZAPpn8B*tz#5*5?ka`x2_RBRz4&A4Nve7SDXYS~-Z2bssUm z5aCIJhyW{*1-T_}V0$bBna6z(wphB@U1V%ptkcto4(thRF1-7SaSwK)aAh00Qq5>v zyRi9+Y=FA~yxZbdV9el{;H7DW@>UbXVixRc=1;L~ZWo@;ufccR)y70uFA&VG+OS4g z=EwBhdLToT?ZC{yS9;Y(>31mX$U1H#RPq3fRBl-$Gm!>%LL8_a?U?22jQMco(&4${ z{bJKaun&h6i5$3l=sA|WS9V198d?B-!OJzTYmL(8KYptt`}^9mSu9XIFOu zNC7W2m+Pe}^=2+dTCyU~WL2KXraZ^FWeRgQr&J;HdHTA?Hpzf(5e2y#;)y(3fvS?` zA@Gx$Owl@uo#f|LcJ!115qWe}yNO)p>)Dx@(?k}=Gk2Vqe0a#6ljx!nB~7q0@RXn? zCxp|+d2&ax2RP9uN0ZOtHuB`s_~hXZr;Q#dq)A7U_TQ;JyjPn&b5M};@<2>oN%<)6v*%SVVZpdGxr3Xv^ delta 424 zcmZvYF;2r!5JX3!L4Z?4LO_GQP)Za!I*{m~iv)-!jj;__IDE@VK(2BKpMV=6rQilR z10_e{?f*hhr1`s^ot+u)>T-4d@wI(&rJ0;cO?ev?%H%bnz9{F-L1!Q~n}fOTqQAFr zAoNV0;5b!E=?gSWYf9JX70oP6Yo?i=nLM!9P+RIebY68}+kT1WW7uzlQbCTP1{#Ck z;1n~ysock~f@tOy0#1MyrhDJnJ&UF(OBUWDrMhQc1x^d*3Gx@dCWyzlfj8-rq+E>P z7JS){ID*D{$G&NL-0WDlIOnkJ$A6DxjOZ8>u0PN<8~+b9Ld6a=)R7Wxb)Wr%<#F${ KxBNcb-1q^FMpJtL diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi index 39c005a683ff6e99f85fead67ed79a4a30567f4c..355e01a333e168d4ae2cc335b4f141ddf39126ee 100644 GIT binary patch delta 1032 zcma)*Ur1A76u{4Hx|SP-x<5wgWr$l)G?aXi!fcsQ?B;GFGTH83Ubp#oPIq(DbjlF7 zw1lq|EQnqLdm8LbqTYlIf?lK`AA9HzWFZuZtn+NlaZqbR`vJMV(^0r*PF^g(|oVP7vTaTmu*Ia0#sBY|$GUk+Eq)Dt#LSp&vS7 z0B*t%Sw48T=#y|--nu~=wKax)PT(+`3+!Z0`?%_tCv;onlkSa~4!$qAJvMj?{ApS5 zf9EO`X1#MQKiaO&&?42kY!!51h4Oi=f7w+WJM5*dgklwU;+m;oY{~t^Q(z}zaevdR z)C6yfEF>3WTU}|HhT7oo4q73E%}Ou~GMs>E)&Z@YP;#{~)fbI9BkJy`GMoA}71`9+ zWxgNoRUH%ggtEQRHF*I^w8B?mC$4wWgYI@}rtmBcK3GgB0s^}THBeyZK;&0OmfVxc zvGLjQ*R7RV;wf2We9x7}nS5JnXEZHkH7aK4Hzb(U8JUAv%8oKUW!yYp%~?PXhuB+> zKqVN09+bn#pMx+Sst^AuC^?9rPez*+CAWKMi7cC}rLI5X91Mm;KAP%FM1C>}&IrF9 z?ObT^Y5kfhTG;ked4E5l-0N-*&;#Vgk^7x$f9OXp^K_2WP8!^#w5&Uu!zcZ^tkEa< z7Ds6=>i*z-!PBvjEusCZxDL%;SgyMzX)JF z2R@ADa2;iQI@yah2TL=60Rc3HF+jmjWV{hnqxAEMCA82K^w!W8Bvu5Ik--DUD`nJV xw90r<_P2Qj^(gsfs;#3_qEuf>wg_GFgfgnAiMRXN$iK&vAC5UcoIHNY?l*&0E)f6# delta 923 zcmZuwOKTHR6#i1iKE|kR5={gvw^AyCjv+o)f>I+=5Dk;6AR>w5Xo|^9%&TP8jks_l za({ul;HnUDDF{-EJO4m&;mVC0_xhbXGelH|;huXQ-}%ntez>rGZo6hpDd@_4K@Y6s z`oWE?+)O*Qpl}x(2=E9YHqoWW z>)BVf!uRS~|EI?+D|02n{pCb(7ezX^=H3+7(1RifgVBKxk5Db10_yWuw1>vlr!FGC z6&kUJ23-`IsMExHcIzZO(YQIi%_;ubj2U(+|n!Tx(G z8Dq^lGTuwSOJu#5R^#1+&D7SUT&ck`#RrCk+=X*M*3#?-?*n70^LCZXa+~L*A62f< zHI%69vVt~089@)Hjh8f4(EptOGxV3KmR0z7_)?fG2%D*Y6;7RZ7+U5%nW?0fRtvRg zZ6fbzx_w4ph91rDB-=j9mi6w!rR2Jr%V{TbELrhdret~}Pi2&SKJh9hVl8t;f69HE pcDN~QuAP6ISU%@hx%kocOx{wNugc}(FBRf< From 66bcb3bb8b2837a2a7638817a887ca772a4ba735 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 8 Jun 2017 17:17:59 +0300 Subject: [PATCH 13/14] MAINT-7460 FIXED Crash in LLPopupView::removePopup() --- indra/newview/llexpandabletextbox.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 711a87dc99..d657f04457 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -407,6 +407,7 @@ void LLExpandableTextBox::collapseTextBox() setRect(mCollapsedRect); updateTextBoxRect(); + gViewerWindow->removePopup(this); } void LLExpandableTextBox::onFocusLost() @@ -434,8 +435,6 @@ void LLExpandableTextBox::reshape(S32 width, S32 height, BOOL called_from_parent mExpanded = false; LLUICtrl::reshape(width, height, called_from_parent); updateTextBoxRect(); - - gViewerWindow->removePopup(this); } void LLExpandableTextBox::setValue(const LLSD& value) From c47bf2656fe83b3ed9ab1008d5ea537c74d620fd Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 8 Jun 2017 19:44:26 +0300 Subject: [PATCH 14/14] MAINT-5 Fixed url named group names should not display as url links --- .../skins/default/xui/en/notifications.xml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 97f614cf62..afdb696cb4 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -869,7 +869,7 @@ Do you wish to proceed? icon="alertmodal.tga" name="JoinGroupNoCost" type="alertmodal"> -You are joining group [NAME]. +You are joining group <nolink>[NAME]</nolink>. Do you wish to proceed? group confirm @@ -960,7 +960,7 @@ Sorry, trial users can't join groups. icon="alertmodal.tga" name="JoinGroupMaxGroups" type="alertmodal"> -You cannot join '[group_name]': +You cannot join '<nolink>[group_name]</nolink>': You are already a member of [group_count] groups, the maximum number allowed is [max_groups] success group_id @@ -976,7 +976,7 @@ You are already a member of [group_count] groups, the maximum number allowed is icon="alertmodal.tga" name="JoinGroupClosedEnrollment" type="alertmodal"> -You cannot join '[group_name]': +You cannot join '<nolink>[group_name]</nolink>': The group no longer has open enrollment. group_id success @@ -1065,7 +1065,7 @@ Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NA icon="alertmodal.tga" name="ReturnObjectsDeededToGroup" type="alertmodal"> -Are you sure you want to return all objects shared with the group '[NAME]' on this parcel of land back to their previous owner's inventory? +Are you sure you want to return all objects shared with the group '<nolink>[NAME]</nolink>' on this parcel of land back to their previous owner's inventory? *WARNING* This will delete the non-transferable objects deeded to the group! @@ -1168,7 +1168,7 @@ Are you sure you want to disable all objects in this region? icon="alertmodal.tga" name="ReturnObjectsNotOwnedByGroup" type="alertmodal"> -Return the objects on this parcel of land that are NOT shared with the group [NAME] back to their owners? +Return the objects on this parcel of land that are NOT shared with the group <nolink>[NAME]</nolink> back to their owners? Objects: [N] confirm @@ -1956,7 +1956,7 @@ Eject [AVATAR_NAME] from your land? name="EjectAvatarFromGroup" persist="true" type="notify"> -You ejected [AVATAR_NAME] from group [GROUP_NAME] +You ejected [AVATAR_NAME] from group <nolink>[GROUP_NAME]</nolink> group @@ -3331,7 +3331,7 @@ Please select a smaller area and try again. By deeding this parcel, the group will be required to have and maintain sufficient land use credits. The purchase price of the land is not refunded to the owner. If a deeded parcel is sold, the sale price will be divided evenly among group members. -Deed this [AREA] m² of land to the group '[GROUP_NAME]'? +Deed this [AREA] m² of land to the group '<nolink>[GROUP_NAME]</nolink>'? group confirm group confirm -You have left the group '[group_name]'. +You have left the group '<nolink>[group_name]</nolink>'. group @@ -7055,7 +7055,7 @@ The objects on the selected parcel of land owned by the Resident '[NAME]&ap name="GroupObjectsReturned" persist="true" type="notify"> -The objects on the selected parcel of land shared with the group [GROUPNAME] have been returned back to their owner's inventory. +The objects on the selected parcel of land shared with the group <nolink>[GROUPNAME]</nolink> have been returned back to their owner's inventory. Transferable deeded objects have been returned to their previous owners. Non-transferable objects that are deeded to the group have been deleted. group @@ -8086,7 +8086,7 @@ To grant this permission please update your viewer to the latest version from [D show_toast="false" type="notify"> group -[GROUPNAME]'s '<nolink>[TITLE]</nolink>' +<nolink>[GROUPNAME]</nolink>'s '<nolink>[TITLE]</nolink>' [MESSAGE]