From 0941a48528ae4802d3eb7c38913b1141c9a7f9dd Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 23 Apr 2016 14:29:41 +0200 Subject: [PATCH 01/14] Apply the correct permissions based on asset type in the importer --- indra/newview/fsfloaterimport.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/indra/newview/fsfloaterimport.cpp b/indra/newview/fsfloaterimport.cpp index a792fec115..1753d31de6 100644 --- a/indra/newview/fsfloaterimport.cpp +++ b/indra/newview/fsfloaterimport.cpp @@ -1211,6 +1211,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) LLInventoryType::EType inventory_type = LLInventoryType::defaultForAssetType(asset_type); bool new_file_agent_inventory = false; LLWearableType::EType wearable_type = NOT_WEARABLE; + std::string perms_prefix = ""; if (name.empty()) { @@ -1221,6 +1222,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) { case LLAssetType::AT_TEXTURE: { + perms_prefix = "Uploads"; temporary = getChild("temp_asset")->get(); if (temporary) { @@ -1236,6 +1238,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) break; case LLAssetType::AT_SOUND: { + perms_prefix = "Uploads"; temporary = getChild("temp_asset")->get(); if (temporary) { @@ -1255,6 +1258,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) case LLAssetType::AT_CLOTHING: case LLAssetType::AT_BODYPART: { + perms_prefix = "Wearables"; std::string asset(asset_data.begin(), asset_data.end()); S32 position = asset.rfind("type"); @@ -1298,6 +1302,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) break; case LLAssetType::AT_NOTECARD: { + perms_prefix = "Notecards"; if (inventory_item.isNull()) { // create inventory item first @@ -1321,6 +1326,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) break; case LLAssetType::AT_LSL_TEXT: { + perms_prefix = "Scripts"; if (inventory_item.isNull()) { // create inventory item first @@ -1352,6 +1358,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) break; case LLAssetType::AT_ANIMATION: { + perms_prefix = "Uploads"; temporary = getChild("temp_asset")->get(); if (temporary) { @@ -1369,6 +1376,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) break; case LLAssetType::AT_GESTURE: { + perms_prefix = "Gestures"; if (inventory_item.isNull()) { // create inventory item first @@ -1472,7 +1480,7 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) data->mAssetInfo.mType = asset_type; data->mAssetInfo.mCreatorID = gAgentID; data->mInventoryType = inventory_type; - data->mNextOwnerPerm = LLFloaterPerms::getNextOwnerPerms(); + data->mNextOwnerPerm = LLFloaterPerms::getNextOwnerPerms(perms_prefix); data->mExpectedUploadCost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); FSResourceData* fs_data = new FSResourceData; fs_data->uuid = asset_id; @@ -1495,9 +1503,9 @@ void FSFloaterImport::uploadAsset(LLUUID asset_id, LLUUID inventory_item) body["inventory_type"] = LLInventoryType::lookup(inventory_type); body["name"] = name; body["description"] = description; - body["next_owner_mask"] = LLSD::Integer(LLFloaterPerms::getNextOwnerPerms()); - body["group_mask"] = LLSD::Integer(LLFloaterPerms::getGroupPerms()); - body["everyone_mask"] = LLSD::Integer(LLFloaterPerms::getEveryonePerms()); + body["next_owner_mask"] = LLSD::Integer(LLFloaterPerms::getNextOwnerPerms(perms_prefix)); + body["group_mask"] = LLSD::Integer(LLFloaterPerms::getGroupPerms(perms_prefix)); + body["everyone_mask"] = LLSD::Integer(LLFloaterPerms::getEveryonePerms(perms_prefix)); } From 2313b4ac42980270403d6dfcd541423aa11d2003 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 23 Apr 2016 22:41:58 +0200 Subject: [PATCH 02/14] FIRE-18207: Color avatar hitboxes in the same color as on minimap --- indra/newview/lldrawpoolavatar.cpp | 4 ++- indra/newview/llnetmap.cpp | 45 +++++++++++++++++------------- indra/newview/llnetmap.h | 1 + 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 231b54eef0..680c38a1e1 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -56,6 +56,7 @@ // (See *NOTE: in renderAvatars why this forward declatation is commented out) // void drawBoxOutline(const LLVector3& pos,const LLVector3& size); // llspatialpartition.cpp // +#include "llnetmap.h" static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK; static U32 sBufferUsage = GL_STREAM_DRAW_ARB; @@ -1267,7 +1268,8 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) gGL.matrixMode(LLRender::MM_MODELVIEW); gGL.pushMatrix(); - gGL.diffuseColor4f(0.7f,1.0f,0.0f,0.3f); + LLColor4 avatar_color = LLNetMap::getAvatarColor(avatarp->getID()); + gGL.diffuseColor4f(avatar_color.mV[VRED], avatar_color.mV[VGREEN], avatar_color.mV[VBLUE], avatar_color.mV[VALPHA]); glLineWidth(2.0); LLQuaternion rot=avatarp->getRotationRegion(); diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index f0ce3d3585..dfabf9a9b3 100755 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -667,25 +667,7 @@ void LLNetMap::draw() } // - LLColor4 color = map_avatar_color; // - - // Color "special" avatars with special colors (Friends, muted, Lindens, etc) - color = LGGContactSets::getInstance()->colorize(uuid, color, LGG_CS_MINIMAP); - // - - //color based on contact sets prefs - if(LGGContactSets::getInstance()->hasFriendColorThatShouldShow(uuid, LGG_CS_MINIMAP)) - { - color = LGGContactSets::getInstance()->getFriendColor(uuid); - } - - // Mark Avatars with special colors - avatar_marks_map_t::iterator found = sAvatarMarksMap.find(uuid); - if (found != sAvatarMarksMap.end()) - { - color = found->second; - } - // Mark Avatars with special colors + LLColor4 color = getAvatarColor(uuid); // // [RLVa:KB] - Checked: 2010-04-19 (RLVa-1.2.0f) | Modified: RLVa-1.2.0f | FS-Specific LLWorldMapView::drawAvatar( @@ -1835,6 +1817,31 @@ void LLNetMap::clearAvatarMarkColors() { sAvatarMarksMap.clear(); } + +// static +LLColor4 LLNetMap::getAvatarColor(const LLUUID& avatar_id) +{ + static LLUIColor map_avatar_color = LLUIColorTable::instance().getColor("MapAvatarColor", LLColor4::white); + LLColor4 color = map_avatar_color; + + // Color "special" avatars with special colors (Friends, muted, Lindens, etc) + color = LGGContactSets::getInstance()->colorize(avatar_id, color, LGG_CS_MINIMAP); + + // Color based on contact sets prefs + if(LGGContactSets::getInstance()->hasFriendColorThatShouldShow(avatar_id, LGG_CS_MINIMAP)) + { + color = LGGContactSets::getInstance()->getFriendColor(avatar_id); + } + + // Mark Avatars with special colors + avatar_marks_map_t::iterator found = sAvatarMarksMap.find(avatar_id); + if (found != sAvatarMarksMap.end()) + { + color = found->second; + } + + return color; +} // void LLNetMap::handleCam() diff --git a/indra/newview/llnetmap.h b/indra/newview/llnetmap.h index 977f5407a0..a06a10b8e5 100755 --- a/indra/newview/llnetmap.h +++ b/indra/newview/llnetmap.h @@ -108,6 +108,7 @@ public: static void clearAvatarMarkColor(const LLUUID& avatar_id); static void clearAvatarMarkColors(const uuid_vec_t& avatar_ids); static void clearAvatarMarkColors(); + static LLColor4 getAvatarColor(const LLUUID& avatar_id); // private: From fa17c14cbb11b9ed242fcd66aa1552bbbc5a1dc9 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sun, 24 Apr 2016 00:35:34 +0200 Subject: [PATCH 03/14] Filter out announcement type IMs (incoming IMs, autoresponse sent...) from Growl - the important message might not be shown due to message throttle otherwise --- indra/newview/growlmanager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/newview/growlmanager.cpp b/indra/newview/growlmanager.cpp index 1c2c76229e..2d9b278771 100644 --- a/indra/newview/growlmanager.cpp +++ b/indra/newview/growlmanager.cpp @@ -238,7 +238,7 @@ void GrowlManager::performNotification(const std::string& title, const std::stri { if (mTitleTimers[title] > now - GROWL_THROTTLE_TIME) { - LL_WARNS("GrowlNotify") << "Discarded notification with title '" << title << "' - spam ._." << LL_ENDL; + LL_WARNS("GrowlNotify") << "Discarded notification with title '" << title << "' due to throttle" << LL_ENDL; mTitleTimers[title] = now; return; } @@ -317,7 +317,9 @@ bool GrowlManager::filterOldNotifications(LLNotificationPtr pNotification) void GrowlManager::onInstantMessage(const LLSD& im) { LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(im["session_id"].asUUID()); - if (session->isP2PSessionType() && (!im["keyword_alert_performed"].asBoolean() || !gSavedSettings.getBOOL("FSFilterGrowlKeywordDuplicateIMs"))) + if (session->isP2PSessionType() && // Must be P2P + !im["is_announcement"].asBoolean() && // Not an announcement (incoming IM, autoresponse sent info...) + (!im["keyword_alert_performed"].asBoolean() || !gSavedSettings.getBOOL("FSFilterGrowlKeywordDuplicateIMs"))) // Not keyword or show duplicate IMs due to keywords { // Don't show messages from ourselves or the system. const LLUUID from_id = im["from_id"].asUUID(); From df8446b1ffa4b14e9a273ce8673c6d0e326cb3e4 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 27 Apr 2016 01:00:27 +0200 Subject: [PATCH 04/14] Fix a typo --- indra/newview/fslslbridge.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/fslslbridge.cpp b/indra/newview/fslslbridge.cpp index 9e18923cde..68fe73c818 100644 --- a/indra/newview/fslslbridge.cpp +++ b/indra/newview/fslslbridge.cpp @@ -775,7 +775,7 @@ void FSLSLBridge::processAttach(LLViewerObject* object, const LLViewerJointAttac LL_WARNS("FSLSLBridge") << "Bridge container isn't in the correct inventory location. Detaching it and aborting." << LL_ENDL; if (mBridgeCreating) { - report_to_nearby_chat(LLTrans::getString("fs_bridge_failure_attach_wrong_location")); + report_to_nearby_chat(LLTrans::getString("fsbridge_failure_attach_wrong_location")); setBridgeCreating(false); //in case we interrupted the creation } return; From ee91070330c60ce4a67c2c71396add60cf478c95 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 28 Apr 2016 11:32:39 +0200 Subject: [PATCH 05/14] Possible crash fix in LLPanelPlaceInfo::displayParcelInfo --- indra/newview/fsfloaterplacedetails.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/newview/fsfloaterplacedetails.cpp b/indra/newview/fsfloaterplacedetails.cpp index 315efbfc09..0cd83e9bec 100644 --- a/indra/newview/fsfloaterplacedetails.cpp +++ b/indra/newview/fsfloaterplacedetails.cpp @@ -846,6 +846,11 @@ void FSFloaterPlaceDetails::onSLURLBuilt(std::string& slurl) void FSFloaterPlaceDetails::onLandmarkLoaded(LLLandmark* landmark) { + if (!mPanelLandmarkInfo) + { + return; + } + LLUUID region_id; landmark->getRegionID(region_id); landmark->getGlobalPos(mGlobalPos); From 8124810406585d3fa3209c36a15673043e67b580 Mon Sep 17 00:00:00 2001 From: Kadah_Coba Date: Mon, 2 May 2016 21:54:58 -0700 Subject: [PATCH 06/14] FIRE-18247: Reset chat log location to default when set folder is non-existent --- indra/newview/llstartup.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index f9e3ee4c72..c5305bebed 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1324,6 +1324,13 @@ bool idle_startup() { gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath")); } + // FIRE-18247: Handle non-existent chat log location + if (!gDirUtilp->fileExists(gSavedPerAccountSettings.getString("InstantMessageLogPath"))) + { + gDirUtilp->setChatLogsDir(gDirUtilp->getOSUserAppDir()); + gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getChatLogsDir()); + } + // // Seperate user directories per grid on OS build #ifdef OPENSIM gDirUtilp->setPerAccountChatLogsDir(userid, gridlabel); From dea7baedb4fa9d51c53cdb9072c8855cffe07a56 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 3 May 2016 09:17:58 +0200 Subject: [PATCH 07/14] FIRE-18234: Japanese translation update by Hiroshi Kumaki --- .../default/xui/ja/floater_fs_im_session.xml | 7 + .../xui/ja/floater_fs_money_tracker.xml | 3 + .../default/xui/ja/floater_fs_nearby_chat.xml | 5 +- .../xui/ja/floater_notifications_tabbed.xml | 49 +++++++ .../skins/default/xui/ja/floater_tools.xml | 2 + .../default/xui/ja/menu_conversation.xml | 1 + .../default/xui/ja/menu_fs_chat_options.xml | 21 +++ .../default/xui/ja/menu_fs_im_teleport.xml | 5 + .../skins/default/xui/ja/menu_fs_radar.xml | 13 ++ .../skins/default/xui/ja/menu_viewer.xml | 5 +- .../skins/default/xui/ja/notifications.xml | 136 +++++++++++++++++- .../xui/ja/panel_notification_list_item.xml | 114 +++++++++++++++ .../default/xui/ja/panel_preferences_UI.xml | 12 +- .../xui/ja/panel_preferences_backup.xml | 12 +- .../default/xui/ja/panel_preferences_chat.xml | 7 +- .../xui/ja/panel_preferences_firestorm.xml | 4 + .../xui/ja/panel_preferences_general.xml | 2 + .../default/xui/ja/panel_preferences_move.xml | 2 + .../xui/ja/panel_preferences_privacy.xml | 7 +- .../xui/ja/panel_preferences_setup.xml | 4 +- .../xui/ja/panel_preferences_skins.xml | 1 + .../default/xui/ja/panel_tools_texture.xml | 10 +- .../newview/skins/default/xui/ja/strings.xml | 52 ++++++- 23 files changed, 458 insertions(+), 16 deletions(-) create mode 100644 indra/newview/skins/default/xui/ja/floater_notifications_tabbed.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_fs_chat_options.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_fs_im_teleport.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_notification_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/floater_fs_im_session.xml b/indra/newview/skins/default/xui/ja/floater_fs_im_session.xml index c5707fa684..8838230d11 100644 --- a/indra/newview/skins/default/xui/ja/floater_fs_im_session.xml +++ b/indra/newview/skins/default/xui/ja/floater_fs_im_session.xml @@ -55,6 +55,10 @@