From 6c373ee31e40d714c9c9ff54fca84fdde17510d3 Mon Sep 17 00:00:00 2001 From: Damian Zhaoying Date: Sat, 15 Mar 2014 05:14:07 -0300 Subject: [PATCH 001/242] Update Spanish languages files --- .../newview/skins/default/xui/es/floater_rlv_strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 indra/newview/skins/default/xui/es/floater_rlv_strings.xml diff --git a/indra/newview/skins/default/xui/es/floater_rlv_strings.xml b/indra/newview/skins/default/xui/es/floater_rlv_strings.xml new file mode 100644 index 000000000..c1699d077 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_rlv_strings.xml @@ -0,0 +1,9 @@ + + + + + + + From 7dca3331667c82871cc693318d5ef5037686d5ec Mon Sep 17 00:00:00 2001 From: Damian Zhaoying Date: Mon, 28 Apr 2014 15:51:48 -0300 Subject: [PATCH 002/242] Update spanish translations. Add translations for news floaters, dinamyc toolbars, RLVa and autoreplace. --- .../default/xui/en-us/floater_autoreplace.xml | 2 + .../default/xui/es/floater_autoreplace.xml | 7 +- .../skins/default/xui/es/floater_buy_land.xml | 2 +- .../xui/es/floater_instant_message.xml | 1 + ...floater_instant_message_concisebuttons.xml | 1 + .../default/xui/es/floater_live_lsleditor.xml | 2 +- .../xui/es/floater_new_outfit_dialog.xml | 68 +- .../xui/es/floater_region_restarting.xml | 26 + .../default/xui/es/floater_toolbar_prefs.xml | 96 ++ .../skins/default/xui/es/floater_tools.xml | 2 +- .../skins/default/xui/es/menu_avs_list.xml | 1 + .../skins/default/xui/es/menu_mini_map.xml | 16 +- .../skins/default/xui/es/menu_radar.xml | 1 + .../skins/default/xui/es/menu_viewer.xml | 19 +- .../skins/default/xui/es/notifications.xml | 5 + .../xui/es/panel_preferences_ascent_chat.xml | 44 +- .../es/panel_preferences_ascent_system.xml | 7 +- .../xui/es/panel_preferences_input.xml | 6 + .../default/xui/es/panel_region_estate.xml | 2 +- .../skins/default/xui/es/panel_toolbar.xml | 253 ++++- .../skins/default/xui/es/rlva_strings.xml | 293 +++--- .../newview/skins/default/xui/es/strings.xml | 900 ++++-------------- 22 files changed, 830 insertions(+), 924 deletions(-) create mode 100644 indra/newview/skins/default/xui/es/floater_region_restarting.xml create mode 100644 indra/newview/skins/default/xui/es/floater_toolbar_prefs.xml diff --git a/indra/newview/skins/default/xui/en-us/floater_autoreplace.xml b/indra/newview/skins/default/xui/en-us/floater_autoreplace.xml index 2abd79d11..4f24a3da9 100644 --- a/indra/newview/skins/default/xui/en-us/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/en-us/floater_autoreplace.xml @@ -186,6 +186,7 @@ mouse_opaque="false" name="divisor3"/> + + diff --git a/indra/newview/skins/default/xui/en-us/notifications.xml b/indra/newview/skins/default/xui/en-us/notifications.xml index f015201e7..eadbfe982 100644 --- a/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/indra/newview/skins/default/xui/en-us/notifications.xml @@ -693,13 +693,6 @@ Go to the [SECOND_LIFE] web site for more information on partnering? yestext="Go to Page"/> - -Your default permissions may not work in older regions. - - + +There was a problem saving the default permissions due to the following reason: [REASON]. Please try setting the default permissions later. + fail + + + diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml index 597200310..3f0c796a6 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml @@ -137,13 +137,13 @@ Next Owner Perms Objects - - - + + + Scripts - - - + + + diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index c5f1bc36a..710397a8e 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -372,10 +372,6 @@ Marcando este ítem, se mostrará: - - Tus permisos por defecto no funcionarán en regiones antiguas. - - Si este residente ha indicado una URL para mostrar un perfil en la web, tu puedes: * Pulsar 'Cargar' para ver la página en esta pestaña web. diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index a55d8f093..da9e27ee7 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -244,10 +244,6 @@ Aller sur le site de [SECOND_LIFE_GRID] pour avoir plus d'informations sur les p - - Il est possible que vos droits par défaut ne fonctionnent pas dans les anciennes régions. - - Si ce résident a défini une URL de profil web, vous pouvez: * Cliquer sur Charger pour afficher la page dans cet onglet; diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 026ffca53..9b850e302 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -235,9 +235,6 @@ Marcando questo campo si mostrerà: Vai al sito web di Second Life per ulteriori informazioni sulla partnership? - - I tuoi permessi di base possono non funzionare nelle regioni più vecchie. - Se questo/a residente ha impostato una URL nel suo profilo puoi: * Cliccare 'Carica' per vedere la pagina in questa finestra web. diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 33d07ff22..ce77ba87c 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -300,10 +300,6 @@ Ir para o site do [SECOND_LIFE] para mais informações sobre parceria? - - Suas permissões padrão podem não funcionar em regiões antigas. - - Se este Residente definiu uma URL de perfil na web, então você pode: * Clicar em 'Carregar' para ver a página na aba Web. From 21e1359b3734e85bbab514f15201793a98e76f33 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Sat, 14 Jun 2014 15:38:33 -0400 Subject: [PATCH 079/242] Confirmation for removing users, also reposition the remove button icon --- indra/newview/llpanellogin.cpp | 11 ++++++++--- indra/newview/llpanellogin.h | 3 ++- .../newview/skins/default/xui/en-us/notifications.xml | 11 +++++++++++ indra/newview/skins/default/xui/en-us/panel_login.xml | 4 ++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 852add435..1be856fdb 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -154,7 +154,6 @@ public: LLLoginRefreshHandler gLoginRefreshHandler; - //--------------------------------------------------------------------------- // Public methods //--------------------------------------------------------------------------- @@ -191,7 +190,7 @@ LLPanelLogin::LLPanelLogin(const LLRect& rect) password_edit->setCommitCallback(mungePassword, this); password_edit->setDrawAsterixes(TRUE); - getChild("remove_login")->setCommitCallback(boost::bind(&LLPanelLogin::removeLogin, this)); + getChild("remove_login")->setCommitCallback(boost::bind(&LLPanelLogin::confirmDelete, this)); // change z sort of clickable text to be behind buttons sendChildToBack(getChildView("channel_text")); @@ -1132,8 +1131,14 @@ void LLPanelLogin::clearPassword() sInstance->mMungedPassword = blank; } -void LLPanelLogin::removeLogin() +void LLPanelLogin::confirmDelete() { + LLNotificationsUtil::add("ConfirmDeleteUser", LLSD(), LLSD(), boost::bind(&LLPanelLogin::removeLogin, this, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2))); +} + +void LLPanelLogin::removeLogin(bool not) +{ + if (not) return; LLComboBox* combo(getChild("username_combo")); const std::string label(combo->getTextEntry()); if (combo->isTextDirty() || !combo->itemExists(label)) return; // Text entries aren't in the list diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index 1030eb332..6ede5cd35 100644 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h @@ -118,7 +118,8 @@ private: void onLoginComboLostFocus(LLComboBox* combo_box); static void onNameCheckChanged(LLUICtrl* ctrl, void* data); static void clearPassword(); - void removeLogin(); + void confirmDelete(); + void removeLogin(bool not); public: diff --git a/indra/newview/skins/default/xui/en-us/notifications.xml b/indra/newview/skins/default/xui/en-us/notifications.xml index eadbfe982..3fb2d93fe 100644 --- a/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/indra/newview/skins/default/xui/en-us/notifications.xml @@ -9780,6 +9780,17 @@ AntiSpam: Blocked newline flood from [SOURCE] (over [AMOUNT] newlines). + +Are you sure you want to delete the selected user? + + + - + - @@ -96,7 +96,7 @@ Meters diff --git a/indra/newview/skins/default/xui/en-us/panel_group_invite.xml b/indra/newview/skins/default/xui/en-us/panel_group_invite.xml index 8bacbe93b..213f48242 100644 --- a/indra/newview/skins/default/xui/en-us/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/en-us/panel_group_invite.xml @@ -13,7 +13,7 @@ Resident Chooser' to start. column_padding="0" draw_border="true" height="174" left="5" multi_select="true" name="invitee_list" tool_tip="Hold the Ctrl key and click resident names to multi-select." - width="200" /> + width="200" menu_num="0"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/en-us/notifications.xml b/indra/newview/skins/default/xui/en-us/notifications.xml index b71f3505f..d352a063f 100644 --- a/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/indra/newview/skins/default/xui/en-us/notifications.xml @@ -179,6 +179,26 @@ You may choose to allow or deny the corresponding domain or in-world scripted ob text="Whitelist"/> + + +Enter a domain name to be added to the [LIST]: + confirm +
+ +
@@ -112,8 +112,8 @@ mouse_opaque="false" name="remove_whitelist"> + function="MediaFilter.OnRemove" + parameter="1"/> @@ -176,8 +176,7 @@ mouse_opaque="false" name="add_blacklist"> + function="MediaFilter.OnAdd"/> @@ -203,8 +202,7 @@ mouse_opaque="false" name="remove_blacklist"> + function="MediaFilter.OnRemove"/> From bd7e291787291af46b550cd05850a7ebd5949bd8 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 21 Jul 2014 19:05:24 -0400 Subject: [PATCH 172/242] Debug output that was once useful to me. --- indra/llmessage/llavatarnamecache.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index b16b086a0..01ea42727 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -794,6 +794,7 @@ void LLAvatarNameCache::setUseDisplayNames(bool use) if (use != sUseDisplayNames) { sUseDisplayNames = use; + LL_DEBUGS("AvNameCache") << "Display names are now: " << (use ? "on" : "off") << LL_ENDL; // flush our cache sCache.clear(); From bf9d3acf3368e889e2a40c5ee15125f68b43705b Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 21 Jul 2014 19:07:16 -0400 Subject: [PATCH 173/242] Factor in mAvatarOffset(hover) when calculating the legacy offset, though I doubt this helps. --- indra/newview/llvoavatarself.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index c427ae014..885b525df 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -3258,7 +3258,7 @@ LLVector3 LLVOAvatarSelf::getLegacyAvatarOffset() const if(on_pose_stand) offset.mV[VZ] += 7.5f; - return offset; + return mAvatarOffset + offset; } // static From cd85afc9a5bebc2a2a7a4691d44fce12129c2b28 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Mon, 21 Jul 2014 20:28:23 -0500 Subject: [PATCH 174/242] Quick workaround to fix issue with simple geom not rendering in deferred 'underwater' pass. --- .../app_settings/shaders/class1/lighting/lightWaterF.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl index 3586652cb..248bff55f 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl @@ -39,10 +39,10 @@ void default_lighting_water() { vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color; - if(color.a < .004) + /*if(color.a < .004) { discard; - } + }*/ color.rgb = atmosLighting(color.rgb); From 75e85701c6e916663955345f56215119a83011b5 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 21 Jul 2014 22:56:18 -0400 Subject: [PATCH 175/242] Add Ban From Group option to right click menu of avatar lists. Also missed two touchups for the Responder API merge in llfloaterperms.cpp --- indra/newview/llavataractions.cpp | 19 +++++++++++++++++++ indra/newview/llfloaterperms.cpp | 4 ++-- indra/newview/llviewermenu.cpp | 11 +++++++++++ .../skins/default/xui/en-us/menu_avs_list.xml | 4 ++++ .../skins/default/xui/en-us/menu_radar.xml | 4 ++++ 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 35f731bff..fae1b7c3d 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -37,6 +37,7 @@ #include "llagent.h" #include "llcallingcard.h" // for LLAvatarTracker #include "llfloateravatarinfo.h" +#include "llfloatergroupbulkban.h" #include "llfloatergroupinvite.h" #include "llfloatergroups.h" #include "llfloaterwebprofile.h" @@ -747,6 +748,24 @@ bool LLAvatarActions::handlePay(const LLSD& notification, const LLSD& response, return false; } +// Ban from group functions +void callback_ban_from_group(const LLUUID& group, uuid_vec_t& ids) +{ + LLFloaterGroupBulkBan::showForGroup(group, &ids); +} + +void ban_from_group(const uuid_vec_t& ids) +{ + if (LLFloaterGroupPicker* widget = LLFloaterGroupPicker::showInstance(ids.front())) // It'd be cool if LLSD could be formed from uuid_vec_t + { + widget->center(); + widget->setPowersMask(GP_GROUP_BAN_ACCESS); + widget->removeNoneOption(); + widget->setSelectGroupCallback(boost::bind(callback_ban_from_group, _1, ids)); + } +} +// + // static void LLAvatarActions::callback_invite_to_group(LLUUID group_id, LLUUID id) { diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp index bb0dbe934..aa6b76c87 100644 --- a/indra/newview/llfloaterperms.cpp +++ b/indra/newview/llfloaterperms.cpp @@ -234,8 +234,8 @@ private: void httpFailure(void) { // Prevent 404s from annoying the user all the tme - if (status == HTTP_NOT_FOUND) - LL_INFOS("FloaterPermsResponder") << "Failed to send default permissions to simulator. 404, reason: " << reason << LL_ENDL; + if (mStatus == HTTP_NOT_FOUND) + LL_INFOS("FloaterPermsResponder") << "Failed to send default permissions to simulator. 404, reason: " << mReason << LL_ENDL; else // // Do not display the same error more than once in a row diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d417b1d2d..bcc2f5ee5 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -9012,6 +9012,16 @@ class ListVisibleWebProfile : public view_listener_t } }; +void ban_from_group(const uuid_vec_t& ids); +class ListBanFromGroup : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + ban_from_group(get_focused_list_ids_selected()); + return true; + } +}; + class ListCopySLURL : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -9528,6 +9538,7 @@ void initialize_menus() addMenu(new ListEnableMute(), "List.EnableMute"); addMenu(new ListEnableOfferTeleport(), "List.EnableOfferTeleport"); addMenu(new ListVisibleWebProfile(), "List.VisibleWebProfile"); + addMenu(new ListBanFromGroup(), "List.BanFromGroup"); addMenu(new ListCopySLURL(), "List.CopySLURL"); addMenu(new ListCopyUUIDs(), "List.CopyUUIDs"); addMenu(new ListInviteToGroup(), "List.InviteToGroup"); diff --git a/indra/newview/skins/default/xui/en-us/menu_avs_list.xml b/indra/newview/skins/default/xui/en-us/menu_avs_list.xml index 53fff36bd..2ba08eaaa 100644 --- a/indra/newview/skins/default/xui/en-us/menu_avs_list.xml +++ b/indra/newview/skins/default/xui/en-us/menu_avs_list.xml @@ -44,6 +44,10 @@ + + + + diff --git a/indra/newview/skins/default/xui/en-us/menu_radar.xml b/indra/newview/skins/default/xui/en-us/menu_radar.xml index 6104e9b1a..35cae2cd9 100644 --- a/indra/newview/skins/default/xui/en-us/menu_radar.xml +++ b/indra/newview/skins/default/xui/en-us/menu_radar.xml @@ -45,6 +45,10 @@ + + + + From f62fc8ab15a0dbb155e05ae023f6fae452d5582b Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 21 Jul 2014 23:11:03 -0400 Subject: [PATCH 176/242] Fix right clicking on lists of avatars and selecting ban/invite not working for nonfriends who aren't nearby. Also touch up group invite floater to show names we can't get from voavatars in the user's global namesystem preference. --- indra/newview/llpanelgroupbulk.cpp | 2 +- indra/newview/llpanelgroupinvite.cpp | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/indra/newview/llpanelgroupbulk.cpp b/indra/newview/llpanelgroupbulk.cpp index 6e4a440da..c6e290963 100644 --- a/indra/newview/llpanelgroupbulk.cpp +++ b/indra/newview/llpanelgroupbulk.cpp @@ -397,7 +397,7 @@ void LLPanelGroupBulk::addUsers(uuid_vec_t& agent_ids) //looks like user try to invite offline friend //for offline avatar_id gObjectList.findObject() will return null //so we need to do this additional search in avatar tracker, see EXT-4732 - if (LLAvatarTracker::instance().isBuddy(agent_id)) + //if (LLAvatarTracker::instance().isBuddy(agent_id)) // Singu Note: We may be using this from another avatar list like group profile, disregard friendship status. { LLAvatarName av_name; if (!LLAvatarNameCache::get(agent_id, &av_name)) diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index e49c3387f..5ae135380 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -461,7 +461,7 @@ void LLPanelGroupInvite::addUsers(uuid_vec_t& agent_ids) //looks like user try to invite offline friend //for offline avatar_id gObjectList.findObject() will return null //so we need to do this additional search in avatar tracker, see EXT-4732 - if (LLAvatarTracker::instance().isBuddy(agent_id)) + //if (LLAvatarTracker::instance().isBuddy(agent_id)) // Singu Note: We may be using this from another avatar list like group profile, disregard friendship status. { LLAvatarName av_name; if (!LLAvatarNameCache::get(agent_id, &av_name)) @@ -476,7 +476,9 @@ void LLPanelGroupInvite::addUsers(uuid_vec_t& agent_ids) } else { - names.push_back(av_name.getLegacyName()); + std::string name; + LLAvatarNameCache::getPNSName(av_name, name); + names.push_back(name); } } } @@ -489,7 +491,9 @@ void LLPanelGroupInvite::addUserCallback(const LLUUID& id, const LLAvatarName& a std::vector names; uuid_vec_t agent_ids; agent_ids.push_back(id); - names.push_back(av_name.getLegacyName()); + std::string name; + LLAvatarNameCache::getPNSName(av_name, name); + names.push_back(name); mImplementation->addUsers(names, agent_ids); } From c6eb3d790e792720f07ebc96d63546dcec0e700e Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 21 Jul 2014 23:11:53 -0400 Subject: [PATCH 177/242] MAINT-4241 FIXED [Group Bans] Ban member(s) button is not greyed out for banning group owners. Viewer gives message that you ejected group owner. by Andrey Kleshchev 5598f66 --- indra/newview/llgroupmgr.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 7ad1a017a..1acafb160 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -2248,6 +2248,22 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) online_status, is_owner); + LLGroupMemberData* member_old = group_datap->mMembers[member_id]; + if (member_old && group_datap->mRoleMemberDataComplete) + { + LLGroupMemberData::role_list_t::iterator rit = member_old->roleBegin(); + LLGroupMemberData::role_list_t::iterator end = member_old->roleEnd(); + + for ( ; rit != end; ++rit) + { + data->addRole((*rit).first, (*rit).second); + } + } + else + { + group_datap->mRoleMemberDataComplete = false; + } + group_datap->mMembers[member_id] = data; } @@ -2265,7 +2281,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) group_datap->mMemberDataComplete = true; group_datap->mMemberRequestID.setNull(); // Make the role-member data request - if (group_datap->mPendingRoleMemberRequest) + if (group_datap->mPendingRoleMemberRequest || !group_datap->mRoleMemberDataComplete) { group_datap->mPendingRoleMemberRequest = false; LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_id); From 8159eff6646d8f0dd8673eefaa4c4473cdfa457b Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 21 Jul 2014 23:13:12 -0400 Subject: [PATCH 178/242] Ban From Group option belongs in the Moderation submenu on the radar. --- indra/newview/skins/default/xui/en-us/menu_radar.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/skins/default/xui/en-us/menu_radar.xml b/indra/newview/skins/default/xui/en-us/menu_radar.xml index 35cae2cd9..0a9e734aa 100644 --- a/indra/newview/skins/default/xui/en-us/menu_radar.xml +++ b/indra/newview/skins/default/xui/en-us/menu_radar.xml @@ -45,10 +45,6 @@ - - - - @@ -141,6 +137,10 @@ + + + + From 41eb6872431ebaa79c98550d26c797415d79bb67 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 22 Jul 2014 03:39:01 -0400 Subject: [PATCH 179/242] Fix compile errors and warnings on linux after merging Shyotl. --- indra/llmath/llmatrix4a.h | 28 ++++++++++++++++----------- indra/llmath/lloctree.h | 4 ++-- indra/newview/lldrawpool.cpp | 3 ++- indra/newview/llflexibleobject.cpp | 6 ++++-- indra/newview/llviewercamera.h | 4 ++-- indra/newview/llviewerobjectlist.cpp | 3 ++- indra/newview/llviewerpartsim.cpp | 16 +++++++++------ indra/newview/llviewertextureanim.cpp | 3 ++- 8 files changed, 41 insertions(+), 26 deletions(-) diff --git a/indra/llmath/llmatrix4a.h b/indra/llmath/llmatrix4a.h index f322c087a..0af8105ec 100644 --- a/indra/llmath/llmatrix4a.h +++ b/indra/llmath/llmatrix4a.h @@ -663,22 +663,28 @@ public: } //======================Logic==================== +private: + template inline void init_foos(LLMatrix4a& foos) const + { + static bool done(false); + if (done) return; + const LLVector4a delta(0.0001f); + foos.setIdentity(); + foos.getRow<0>().sub(delta); + foos.getRow<1>().sub(delta); + foos.getRow<2>().sub(delta); + foos.getRow<3>().sub(delta); + done = true; + } + +public: inline bool isIdentity() const { static LLMatrix4a mins; static LLMatrix4a maxs; - static LLVector4a delta(0.0001f); - static bool init_mins = ( mins.setIdentity(), - mins.getRow<0>().sub(delta), - mins.getRow<1>().sub(delta), - mins.getRow<2>().sub(delta), - mins.getRow<3>().sub(delta), true ); - static bool init_maxs = ( maxs.setIdentity(), - maxs.getRow<0>().add(delta), - maxs.getRow<1>().add(delta), - maxs.getRow<2>().add(delta), - maxs.getRow<3>().add(delta), true ); + init_foos(mins); + init_foos(maxs); LLVector4a mask1 = _mm_and_ps(_mm_cmpgt_ps(mMatrix[0],mins.getRow<0>()), _mm_cmplt_ps(mMatrix[0],maxs.getRow<0>())); LLVector4a mask2 = _mm_and_ps(_mm_cmpgt_ps(mMatrix[1],mins.getRow<1>()), _mm_cmplt_ps(mMatrix[1],maxs.getRow<1>())); diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index 5189d852b..0be162f5c 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -968,11 +968,11 @@ public: #ifdef LL_OCTREE_POOLS void* operator new(size_t size) { - return getPool(size).malloc(); + return LLOctreeNode::getPool(size).malloc(); } void operator delete(void* ptr) { - getPool(sizeof(LLOctreeNode)).free(ptr); + LLOctreeNode::getPool(sizeof(LLOctreeNode)).free(ptr); } #else void* operator new(size_t size) diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index 7a6ca0e24..3a936eaf8 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -301,7 +301,8 @@ void LLFacePool::removeFaceReference(LLFace *facep) if (idx != -1) { facep->setReferenceIndex(-1); - std::vector::iterator iter = vector_replace_with_last(mReferences, mReferences.begin() + idx); + std::vector::iterator face_it(mReferences.begin() + idx); + std::vector::iterator iter = vector_replace_with_last(mReferences, face_it); if(iter != mReferences.end()) (*iter)->setReferenceIndex(idx); } diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index e378c4458..cf97d4e82 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -80,10 +80,12 @@ LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject* vo, LLFlexibleObjectD LLVolumeImplFlexible::~LLVolumeImplFlexible() { - std::vector::iterator iter = vector_replace_with_last(sInstanceList, sInstanceList.begin() + mInstanceIndex); + std::vector::iterator flex_it(sInstanceList.begin() + mInstanceIndex); + std::vector::iterator iter = vector_replace_with_last(sInstanceList, flex_it); if(iter != sInstanceList.end()) (*iter)->mInstanceIndex = mInstanceIndex; - vector_replace_with_last(sUpdateDelay,sUpdateDelay.begin() + mInstanceIndex); + std::vector::iterator update_it(sUpdateDelay.begin() + mInstanceIndex); + vector_replace_with_last(sUpdateDelay, update_it); } //static diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h index 8d4e9ce97..0c465592b 100644 --- a/indra/newview/llviewercamera.h +++ b/indra/newview/llviewercamera.h @@ -39,10 +39,10 @@ class LLViewerObject; // This rotation matrix moves the default OpenGL reference frame // (-Z at, Y up) to Cory's favorite reference frame (X at, Z up) -static LL_ALIGN_16(const LLMatrix4a OGL_TO_CFR_ROTATION(LLVector4a( 0.f, 0.f, -1.f, 0.f), // -Z becomes X +static LL_ALIGN_16(const LLMatrix4a) OGL_TO_CFR_ROTATION(LLVector4a( 0.f, 0.f, -1.f, 0.f), // -Z becomes X LLVector4a(-1.f, 0.f, 0.f, 0.f), // -X becomes Y LLVector4a( 0.f, 1.f, 0.f, 0.f), // Y becomes Z - LLVector4a( 0.f, 0.f, 0.f, 1.f) )); + LLVector4a( 0.f, 0.f, 0.f, 1.f) ); const BOOL FOR_SELECTION = TRUE; const BOOL NOT_FOR_SELECTION = FALSE; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 4bb792f8b..b04c53af5 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1459,7 +1459,8 @@ void LLViewerObjectList::removeFromActiveList(LLViewerObject* objectp) objectp->setListIndex(-1); - std::vector >::iterator iter = vector_replace_with_last(mActiveObjects,mActiveObjects.begin() + idx); + std::vector >::iterator it(mActiveObjects.begin() + idx); + std::vector >::iterator iter = vector_replace_with_last(mActiveObjects, it); if(iter != mActiveObjects.end()) (*iter)->setListIndex(idx); diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index a27e1ec4e..c3f49f69f 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -406,7 +406,8 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt) // Kill dead particles (either flagged dead, or too old) if ((part->mLastUpdateTime > part->mMaxAge) || (LLViewerPart::LL_PART_DEAD_MASK == part->mFlags)) { - vector_replace_with_last(mParticles,mParticles.begin() + i); + part_list_t::iterator it(mParticles.begin() + i); + vector_replace_with_last(mParticles, it); delete part ; } else @@ -416,7 +417,8 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt) { // Transfer particles between groups LLViewerPartSim::getInstance()->put(part) ; - vector_replace_with_last(mParticles,mParticles.begin() + i); + part_list_t::iterator it(mParticles.begin() + i); + vector_replace_with_last(mParticles, it); } else { @@ -721,8 +723,9 @@ void LLViewerPartSim::updateSimulation() if (mViewerPartSources[i]->isDead()) { - vector_replace_with_last(mViewerPartSources,mViewerPartSources.begin() + i); - //mViewerPartSources.erase(mViewerPartSources.begin() + i); + source_list_t::iterator it(mViewerPartSources.begin() + i); + vector_replace_with_last(mViewerPartSources, it); + //mViewerPartSources.erase(it); count--; } else @@ -758,8 +761,9 @@ void LLViewerPartSim::updateSimulation() if (!mViewerPartGroups[i]->getCount()) { delete mViewerPartGroups[i]; - vector_replace_with_last(mViewerPartGroups,mViewerPartGroups.begin() + i); - //mViewerPartGroups.erase(mViewerPartGroups.begin() + i); + group_list_t::iterator it(mViewerPartGroups.begin() + i); + vector_replace_with_last(mViewerPartGroups, it); + //mViewerPartGroups.erase(it); i--; count--; } diff --git a/indra/newview/llviewertextureanim.cpp b/indra/newview/llviewertextureanim.cpp index 525de0ed2..1e6b7a343 100644 --- a/indra/newview/llviewertextureanim.cpp +++ b/indra/newview/llviewertextureanim.cpp @@ -49,7 +49,8 @@ LLViewerTextureAnim::LLViewerTextureAnim(LLVOVolume* vobj) : LLTextureAnim() LLViewerTextureAnim::~LLViewerTextureAnim() { - std::vector::iterator iter = vector_replace_with_last(sInstanceList, sInstanceList.begin() + mInstanceIndex); + std::vector::iterator it(sInstanceList.begin() + mInstanceIndex); + std::vector::iterator iter = vector_replace_with_last(sInstanceList, it); if(iter != sInstanceList.end()) (*iter)->mInstanceIndex = mInstanceIndex; } From 30e76a7c1180360b808933897d8f960e17861cb6 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 22 Jul 2014 04:24:26 -0400 Subject: [PATCH 180/242] Fix linker errors on linux after merging Shyotl --- indra/newview/pipeline.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 28950e8f3..7af2dc21e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -249,12 +249,12 @@ void drawBoxOutline(const LLVector3& pos, const LLVector3& size); U32 nhpo2(U32 v); LLVertexBuffer* ll_create_cube_vb(U32 type_mask, U32 usage); -inline const LLMatrix4a& glh_get_current_modelview() +const LLMatrix4a& glh_get_current_modelview() { return gGLModelView; } -inline const LLMatrix4a& glh_get_current_projection() +const LLMatrix4a& glh_get_current_projection() { return gGLProjection; } @@ -269,12 +269,12 @@ inline const LLMatrix4a& glh_get_last_projection() return gGLLastProjection; } -inline void glh_set_current_modelview(const LLMatrix4a& mat) +void glh_set_current_modelview(const LLMatrix4a& mat) { gGLModelView = mat; } -inline void glh_set_current_projection(const LLMatrix4a& mat) +void glh_set_current_projection(const LLMatrix4a& mat) { gGLProjection = mat; } From 88794d0288a9505fec43da2d5ecef2e15c7205b8 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 22 Jul 2014 04:40:21 -0400 Subject: [PATCH 181/242] Add "Connect to neighboring regions" checkbox to Vanity->Main preferences. --- indra/newview/ascentprefsvan.cpp | 2 ++ indra/newview/ascentprefsvan.h | 1 + .../skins/default/xui/en-us/panel_preferences_ascent_vanity.xml | 1 + 3 files changed, 4 insertions(+) diff --git a/indra/newview/ascentprefsvan.cpp b/indra/newview/ascentprefsvan.cpp index c9f2b937c..6a51b580f 100644 --- a/indra/newview/ascentprefsvan.cpp +++ b/indra/newview/ascentprefsvan.cpp @@ -129,6 +129,7 @@ void LLPrefsAscentVan::refreshValues() mUnfocusedFloatersOpaque = gSavedSettings.getBOOL("FloaterUnfocusedBackgroundOpaque"); mCompleteNameProfiles = gSavedSettings.getBOOL("SinguCompleteNameProfiles"); mScriptErrorsStealFocus = gSavedSettings.getBOOL("LiruScriptErrorsStealFocus"); + mConnectToNeighbors = gSavedSettings.getBOOL("AlchemyConnectToNeighbors"); //Tags\Colors ---------------------------------------------------------------------------- mAscentBroadcastTag = gSavedSettings.getBOOL("AscentBroadcastTag"); @@ -199,6 +200,7 @@ void LLPrefsAscentVan::cancel() gSavedSettings.setBOOL("FloaterUnfocusedBackgroundOpaque", mUnfocusedFloatersOpaque); gSavedSettings.setBOOL("SinguCompleteNameProfiles", mCompleteNameProfiles); gSavedSettings.setBOOL("LiruScriptErrorsStealFocus", mScriptErrorsStealFocus); + gSavedSettings.setBOOL("AlchemyConnectToNeighbors", mConnectToNeighbors); //Tags\Colors ---------------------------------------------------------------------------- gSavedSettings.setBOOL("AscentBroadcastTag", mAscentBroadcastTag); diff --git a/indra/newview/ascentprefsvan.h b/indra/newview/ascentprefsvan.h index 2e7753d10..b45adf652 100644 --- a/indra/newview/ascentprefsvan.h +++ b/indra/newview/ascentprefsvan.h @@ -65,6 +65,7 @@ private: bool mUnfocusedFloatersOpaque; bool mCompleteNameProfiles; bool mScriptErrorsStealFocus; + bool mConnectToNeighbors; //Tags\Colors bool mAscentBroadcastTag; std::string mReportClientUUID; diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml index 0e1ce0f6d..d1ca9be5e 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml @@ -15,6 +15,7 @@ + From 5ca2a3b0f7bc3d75c35110d95124084ec9b74347 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 22 Jul 2014 05:48:30 -0400 Subject: [PATCH 182/242] Feature request: Change status bar search to search in all (applicable) tabs Opens up to last tab selected now, but puts query text and triggers searches in all tabs. Singu TODO: Have it search marketplace? --- indra/newview/llfloaterdirectory.cpp | 17 +++++++++++++++++ indra/newview/llfloaterdirectory.h | 2 ++ indra/newview/llfloatersearch.cpp | 4 +++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterdirectory.cpp b/indra/newview/llfloaterdirectory.cpp index a0244eb18..3bd2932d9 100644 --- a/indra/newview/llfloaterdirectory.cpp +++ b/indra/newview/llfloaterdirectory.cpp @@ -439,6 +439,17 @@ void LLFloaterDirectory::requestClassifieds() } } +void LLFloaterDirectory::searchInAll(const std::string& search_text) +{ + LLPanelDirFindAllInterface::search(sInstance->mFindAllPanel, search_text); + performQueryOn2("classified_panel", search_text); + performQueryOn2("events_panel", search_text); + performQueryOn2("groups_panel", search_text); + performQueryOn2("people_panel", search_text); + performQueryOn2("places_panel", search_text); + sInstance->open(); +} + void LLFloaterDirectory::showFindAll(const std::string& search_text) { showPanel("find_all_panel"); @@ -524,6 +535,12 @@ void LLFloaterDirectory::showPlaces(const std::string& search_text) void LLFloaterDirectory::performQueryOn(const std::string& name, const std::string& search_text) { showPanel(name); + performQueryOn2(name, search_text); +} + +//static +void LLFloaterDirectory::performQueryOn2(const std::string& name, const std::string& search_text) +{ if (search_text.empty()) return; // We're done here. LLPanelDirBrowser* panel = sInstance->getChild(name); panel->getChild("name")->setValue(search_text); diff --git a/indra/newview/llfloaterdirectory.h b/indra/newview/llfloaterdirectory.h index a1bce3efc..0f5f1b501 100644 --- a/indra/newview/llfloaterdirectory.h +++ b/indra/newview/llfloaterdirectory.h @@ -71,6 +71,7 @@ public: // Outside UI widgets can spawn this floater with various tabs // selected. + static void searchInAll(const std::string& search_text); static void showFindAll(const std::string& search_text); static void showClassified(const LLUUID& classified_id); static void showClassified(const std::string& search_text = ""); @@ -92,6 +93,7 @@ public: private: static void performQueryOn(const std::string& name, const std::string& search_text); + static void performQueryOn2(const std::string& name, const std::string& search_text); static void showPanel(const std::string& tabname); /*virtual*/ void onClose(bool app_quitting); void focusCurrentPanel(); diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index b9cf179d2..5d51959d3 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -160,7 +160,9 @@ void LLFloaterSearch::showInstance(const SearchQuery& search, bool web) else { const std::string category(search.category()); - if (category.empty() || category == "all") + if (category.empty()) + LLFloaterDirectory::searchInAll(search.query); + else if (category == "all") LLFloaterDirectory::showFindAll(search.query); else if (category == "people") LLFloaterDirectory::showPeople(search.query); From 6ef4dfb61f53cd7725fa21812b697805c997c7b5 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 22 Jul 2014 05:49:41 -0400 Subject: [PATCH 183/242] Fix Media Filtering preferences UI to look proper. --- .../default/xui/en-us/panel_preferences_audio.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml index 720e4df81..82a40a9e2 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml @@ -2,12 +2,13 @@ Volume: Streaming Preferences: - Audio Preferences: + Audio Preferences: - - - - + Media Filtering + + Off + Blacklist Only + Prompt From 511811de3bb1e6a383ed08fb52382341306621a2 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 22 Jul 2014 07:05:36 -0400 Subject: [PATCH 184/242] Fix Media Filtering preferences code to work right. --- indra/newview/llpanelaudioprefs.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llpanelaudioprefs.cpp b/indra/newview/llpanelaudioprefs.cpp index e61028fa8..1929e693c 100644 --- a/indra/newview/llpanelaudioprefs.cpp +++ b/indra/newview/llpanelaudioprefs.cpp @@ -89,6 +89,7 @@ LLPanelAudioPrefs::~LLPanelAudioPrefs() BOOL LLPanelAudioPrefs::postBuild() { + getChildView("filter_group")->setValue(S32(gSavedSettings.getU32("MediaFilterEnable"))); refreshValues(); // initialize member data from saved settings childSetLabelArg("currency_change_threshold", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol()); @@ -115,6 +116,7 @@ void LLPanelAudioPrefs::refreshValues() mPreviousMuteAudio = gSavedSettings.getBOOL("MuteAudio"); mPreviousMuteWhenMinimized = gSavedSettings.getBOOL("MuteWhenMinimized"); + gSavedSettings.setU32("MediaFilterEnable", getChildView("filter_group")->getValue().asInteger()); } void LLPanelAudioPrefs::cancel() From 4ca6a5c52ca7398caa5f429c0d8560611c85d739 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 22 Jul 2014 07:07:38 -0400 Subject: [PATCH 185/242] Sync up most of the realistic mouselook code with alchemy. This should fix the inverted mouselook when sitting problem Think the bug was in llvoavatar, but keeping in sync is always good for the future overall. --- indra/newview/llagent.cpp | 19 +++---------------- indra/newview/llagentcamera.cpp | 6 +++--- indra/newview/llvoavatar.cpp | 2 +- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 051a68fcd..7fb21ab0d 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -1293,25 +1293,12 @@ F32 LLAgent::clampPitchToLimits(F32 angle) LLVector3 skyward = getReferenceUpVector(); - F32 look_down_limit; - F32 look_up_limit = 10.f * DEG_TO_RAD; + static const LLCachedControl useRealisticMouselook(gSavedSettings, "UseRealisticMouselook", false); + const F32 look_down_limit = (useRealisticMouselook ? 160.f : (isAgentAvatarValid() && gAgentAvatarp->isSitting() ? 130.f : 179.f)) * DEG_TO_RAD; + const F32 look_up_limit = (useRealisticMouselook ? 20.f : 1.f) * DEG_TO_RAD;; F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward ); - if (gAgentCamera.cameraMouselook() && gSavedSettings.getBOOL("UseRealisticMouselook")) - { - look_down_limit = 160.f * DEG_TO_RAD; - look_up_limit = 20.f * DEG_TO_RAD; - } - else if (isAgentAvatarValid() && gAgentAvatarp->isSitting()) - { - look_down_limit = 130.f * DEG_TO_RAD; - } - else - { - look_down_limit = 170.f * DEG_TO_RAD; - } - // clamp pitch to limits if ((angle >= 0.f) && (angle_from_skyward + angle > look_down_limit)) { diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 4dfe7bc4b..a8e0a5c2a 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -1493,14 +1493,14 @@ void LLAgentCamera::updateCamera() if (realistic_ml) { LLQuaternion agent_rot(gAgent.getFrameAgent().getQuaternion()); - if (static_cast(gAgentAvatarp->getRoot())->flagCameraDecoupled()) - if (LLViewerObject* parent = static_cast(gAgentAvatarp->getParent())) + if (LLViewerObject* parent = static_cast(gAgentAvatarp->getParent())) + if (static_cast(gAgentAvatarp->getRoot())->flagCameraDecoupled()) agent_rot *= parent->getRenderRotation(); LLViewerCamera::getInstance()->updateCameraLocation(head_pos, mCameraUpVector, gAgentAvatarp->mHeadp->getWorldPosition() + LLVector3(1.0, 0.0, 0.0) * agent_rot); } else { - const LLVector3 diff = (mCameraPositionAgent - head_pos) * ~gAgentAvatarp->mRoot->getWorldRotation(); + const LLVector3 diff((mCameraPositionAgent - head_pos) * ~gAgentAvatarp->mRoot->getWorldRotation()); gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff); } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index bd0000846..802105235 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4149,7 +4149,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) static const LLCachedControl useRealisticMouselook("UseRealisticMouselook"); F32 pelvis_rot_threshold = clamp_rescale(speed, 0.1f, 1.0f, useRealisticMouselook ? s_pelvis_rot_threshold_slow * 2 : s_pelvis_rot_threshold_slow, s_pelvis_rot_threshold_fast); - if (self_in_mouselook) + if (self_in_mouselook && !useRealisticMouselook) { pelvis_rot_threshold *= MOUSELOOK_PELVIS_FOLLOW_FACTOR; } From 4163b8e40be854771cd1c3429d51b286e36a2add Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 22 Jul 2014 14:38:29 -0400 Subject: [PATCH 186/242] Well that's a strange bug... eh, not too important. --- .../skins/default/xui/en-us/panel_preferences_audio.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml index 82a40a9e2..9295232eb 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml @@ -6,9 +6,9 @@ Media Filtering - Off - Blacklist Only - Prompt + Off + Blacklist Only + Prompt From cf56659b18a7a0611704f92b8559ab01c82d741a Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Wed, 23 Jul 2014 16:51:14 -0400 Subject: [PATCH 187/242] Add xcode_fix.sh to scripts/ to avoid users needing to download it. --- scripts/xcode_fix.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/xcode_fix.sh diff --git a/scripts/xcode_fix.sh b/scripts/xcode_fix.sh new file mode 100644 index 000000000..608b390ad --- /dev/null +++ b/scripts/xcode_fix.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +echo 'Linden fix for Xcode 4.6 to have 10.6SDK so it can build older branches.' + +echo 'Be sure to have the xcode_4.3_for_lion.dmg mounted! This script pulls from that volume!' + +echo 'Creating temporary directory. . .' + +mkdir temp + +pushd temp + +echo 'Copying 10.6SDK. . .' + +cp -R /Volumes/Xcode/Xcode.app/Contents//Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk . + +echo 'Linking darwin10 folders as darwin11. . .' + +pushd MacOSX10.6.sdk/Developer/usr/llvm-gcc-4.2/lib/gcc/ + +ln -s i686-apple-darwin10 i686-apple-darwin11 + +popd + +pushd MacOSX10.6.sdk/usr/lib/gcc/ + +ln -s i686-apple-darwin10 i686-apple-darwin11 + +popd + +pushd MacOSX10.6.sdk/usr/lib/ + +ln -s i686-apple-darwin10 i686-apple-darwin11 + +popd + +echo 'Changing ownership and moving SDK to machine. . . Password required for sudo commands.' + +sudo chown -R root:wheel MacOSX10.6.sdk + +sudo mv MacOSX10.6.sdk/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs + +popd + +rm -rf temp + +echo 'Xcode fix complete.' + From d7bbbd9d40b0f833a0301c8d7b96ee97718087d7 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Wed, 23 Jul 2014 16:58:41 -0400 Subject: [PATCH 188/242] Fix Group Role Data never loading since the group bans merge. --- indra/newview/llpanelgrouproles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 341c41054..e66bad4eb 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -387,7 +387,7 @@ void LLPanelGroupRoles::activate() // Mildly hackish - clear all pending changes cancel(); - LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); + LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mGroupID); } // Check role-member mapping data. From d95e94fa0708083f85a9740c855c1eb31284a519 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Wed, 23 Jul 2014 16:55:46 -0500 Subject: [PATCH 189/242] Missed a cast to LLMatrix4. Was causing assorted wonkiness (most noticeably, mouselook oddities) --- indra/newview/llviewerobject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 25b251dde..a66e20691 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -3722,7 +3722,7 @@ const LLQuaternion LLViewerObject::getRenderRotation() const } else { - ret = LLQuaternion(mDrawable->getWorldMatrix().getF32ptr()); + ret = LLQuaternion(LLMatrix4(mDrawable->getWorldMatrix().getF32ptr())); } } From 1c5872da0c37a72a75099122de9e19f04a4be295 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Wed, 23 Jul 2014 18:12:18 -0400 Subject: [PATCH 190/242] Fix the grids combobox on the login panel not being scrollable because of constantly reordering grids Still select the current grid, just use its index number to select it, instead of hacking it to the top of the combo box. --- indra/newview/llpanellogin.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index e9a38ba79..74712a649 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -741,21 +741,24 @@ void LLPanelLogin::updateGridCombo() const HippoGridInfo *curGrid = gHippoGridManager->getCurrentGrid(); const HippoGridInfo *defGrid = gHippoGridManager->getGrid(defaultGrid); + S32 idx(-1); HippoGridManager::GridIterator it, end = gHippoGridManager->endGrid(); for (it = gHippoGridManager->beginGrid(); it != end; ++it) { std::string grid = it->second->getGridName(); - if(grid.empty() || it->second == defGrid || it->second == curGrid) + if (grid.empty() || it->second == defGrid) continue; + if (it->second == curGrid) idx = grids->getItemCount(); grids->add(grid); } - if(curGrid || defGrid) + if (curGrid || defGrid) { - if(defGrid) + if (defGrid) + { grids->add(defGrid->getGridName(),ADD_TOP); - if(curGrid && defGrid != curGrid) - grids->add(curGrid->getGridName(),ADD_TOP); - grids->setCurrentByIndex(0); + ++idx; + } + grids->setCurrentByIndex(idx); } else { From c6ef099e187e5f26b99f77dd437985fd60d10a71 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Wed, 23 Jul 2014 18:15:14 -0400 Subject: [PATCH 191/242] When we setTextEntry on a combo box, move the cursor to the beginning of the new text. This fixes the login location combo box not displaying the location cleanly after appending coordinates and such. --- indra/llui/llcombobox.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index b3d1ee64d..08ddc3c96 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -937,6 +937,7 @@ void LLComboBox::setTextEntry(const LLStringExplicit& text) if (mTextEntry) { mTextEntry->setText(text); + mTextEntry->setCursor(0); // Singu Note: Move the cursor over to the beginning mHasAutocompletedText = FALSE; updateSelection(); } From b8d999066ddac5cf1d02c14f5504d2e83b898815 Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Sat, 26 Jul 2014 02:46:11 +0200 Subject: [PATCH 192/242] Allow usage of default timeout policy --- indra/llmessage/aihttptimeoutpolicy.cpp | 4 ++-- indra/llmessage/aihttptimeoutpolicy.h | 2 +- indra/llmessage/llhttpclient.h | 2 +- indra/newview/llaccountingcostmanager.cpp | 4 ---- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/indra/llmessage/aihttptimeoutpolicy.cpp b/indra/llmessage/aihttptimeoutpolicy.cpp index 804b7405b..b9c76d90b 100644 --- a/indra/llmessage/aihttptimeoutpolicy.cpp +++ b/indra/llmessage/aihttptimeoutpolicy.cpp @@ -905,7 +905,7 @@ AIHTTPTimeoutPolicy const* AIHTTPTimeoutPolicy::getTimeoutPolicyByName(std::stri #define P2(n, b) AIHTTPTimeoutPolicy n##_timeout(#n, b) // Policy name Policy -P(accountingCostResponder); +//P(accountingCostResponder); P(agentStateResponder); P(appearanceChangeMetricsResponder); P(assetUploadResponder); @@ -992,4 +992,4 @@ P(webProfileResponders); P(wholeModelFeeResponder); P(wholeModelUploadResponder); P2(XMLRPCResponder, connect_40s); -P2(crashLoggerResponder, transfer_300s); \ No newline at end of file +P2(crashLoggerResponder, transfer_300s); diff --git a/indra/llmessage/aihttptimeoutpolicy.h b/indra/llmessage/aihttptimeoutpolicy.h index 6c8fa0683..ba5347482 100644 --- a/indra/llmessage/aihttptimeoutpolicy.h +++ b/indra/llmessage/aihttptimeoutpolicy.h @@ -95,7 +95,7 @@ class AIHTTPTimeoutPolicy { void sanity_checks(void) const; // Accessors. - char const* name(void) const { return mName; } + char const* name(void) const { return mName ? mName : "AIHTTPTimeoutPolicyBase"; } U16 getConnectTimeout(std::string const& hostname) const; U16 getDNSLookup(void) const { return mDNSLookupGrace; } U16 getConnect(void) const { return mMaximumConnectTime; } diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h index 6e0d6adb6..b0fdd53f3 100644 --- a/indra/llmessage/llhttpclient.h +++ b/indra/llmessage/llhttpclient.h @@ -288,7 +288,7 @@ public: virtual AICapabilityType capability_type(void) const { return cap_other; } // Timeout policy to use. - virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const = 0; + virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const; // The name of the derived responder object. For debugging purposes. virtual char const* getName(void) const = 0; diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index c8cd09dd6..815054c33 100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp @@ -30,9 +30,6 @@ #include "llcurl.h" #include "llhttpclient.h" -class AIHTTPTimeoutPolicy; -extern AIHTTPTimeoutPolicy accountingCostResponder_timeout; - //=============================================================================== LLAccountingCostManager::LLAccountingCostManager() { @@ -101,7 +98,6 @@ public: clearPendingRequests(); } - /*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return accountingCostResponder_timeout; } /*virtual*/ char const* getName(void) const { return "LLAccountingCostResponder"; } private: From f3a48bb0f08fce5403e8e580642939a76ab9fb19 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Wed, 30 Jul 2014 08:43:12 -0400 Subject: [PATCH 193/242] Silk Aeon wants greater precision on the Object Weights Floater. --- indra/newview/llfloaterobjectweights.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llfloaterobjectweights.cpp b/indra/newview/llfloaterobjectweights.cpp index f95d82f23..2f4d5954c 100644 --- a/indra/newview/llfloaterobjectweights.cpp +++ b/indra/newview/llfloaterobjectweights.cpp @@ -117,9 +117,9 @@ void LLFloaterObjectWeights::onOpen() // virtual void LLFloaterObjectWeights::onWeightsUpdate(const SelectionCost& selection_cost) { - mSelectedDownloadWeight->setText(llformat("%.1f", selection_cost.mNetworkCost)); - mSelectedPhysicsWeight->setText(llformat("%.1f", selection_cost.mPhysicsCost)); - mSelectedServerWeight->setText(llformat("%.1f", selection_cost.mSimulationCost)); + mSelectedDownloadWeight->setText(llformat("%.2f", selection_cost.mNetworkCost)); + mSelectedPhysicsWeight->setText(llformat("%.2f", selection_cost.mPhysicsCost)); + mSelectedServerWeight->setText(llformat("%.2f", selection_cost.mSimulationCost)); S32 render_cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectRenderCost(); mSelectedDisplayWeight->setText(llformat("%d", render_cost)); From 7fee70543d0b3b2c2b1bca5b2191d0364dc02f5b Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Thu, 31 Jul 2014 08:12:00 -0400 Subject: [PATCH 194/242] Login Response support for destination_guide_url, OpenSimExtras support (properly) search-server-url, and support the new destination-guide-url from OpenSimExtras Expands SignaledType's callback to accept const Type& as argument. typedefs Signal::slot_type to slot_t so that SignaledType can be altered without needing to update all lines setting slots. Merges floater_directory.xml with floater_directory(2|3).xml Condenses translations down to one xml(, finally the nightmare is over). Better ui code support for classic find all panel Not like anyone cares, but ShowcaseURLDefault no longer persists value changes between sessions. Moves SearchType and getSearchUrl(SearchType ty, bool is_web) from HippoGridInfo into a namespace in llpaneldirfind.cpp, the only place where it is used; so that it may wrap the sim feature lookup. Thanks to Shyotl for the help in dynamically maintaining tab positions for dynamic tabs. --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/hippogridmanager.cpp | 93 --- indra/newview/hippogridmanager.h | 6 - indra/newview/lfsimfeaturehandler.cpp | 18 +- indra/newview/lfsimfeaturehandler.h | 20 +- indra/newview/llfloaterdirectory.cpp | 78 +- indra/newview/llfloatersearch.cpp | 1 + indra/newview/llpaneldirfind.cpp | 162 +++- indra/newview/llpaneldirfind.h | 1 + indra/newview/llpaneldirpopular.cpp | 2 + indra/newview/llstartup.cpp | 30 +- .../default/xui/de/floater_directory.xml | 42 +- .../default/xui/de/floater_directory2.xml | 254 ------ .../default/xui/de/floater_directory3.xml | 297 ------- .../default/xui/en-us/floater_directory.xml | 72 +- .../default/xui/en-us/floater_directory2.xml | 652 --------------- .../default/xui/en-us/floater_directory3.xml | 775 ------------------ .../default/xui/es/floater_directory.xml | 48 +- .../default/xui/es/floater_directory2.xml | 411 ---------- .../default/xui/es/floater_directory3.xml | 507 ------------ 20 files changed, 359 insertions(+), 3112 deletions(-) delete mode 100644 indra/newview/skins/default/xui/de/floater_directory2.xml delete mode 100644 indra/newview/skins/default/xui/de/floater_directory3.xml delete mode 100644 indra/newview/skins/default/xui/en-us/floater_directory2.xml delete mode 100644 indra/newview/skins/default/xui/en-us/floater_directory3.xml delete mode 100644 indra/newview/skins/default/xui/es/floater_directory2.xml delete mode 100644 indra/newview/skins/default/xui/es/floater_directory3.xml diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c7d9d1615..3ba271f23 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -552,7 +552,7 @@ Comment URL to load for the Showcase tab in Second Life Persist - 1 + 0 Type String Value diff --git a/indra/newview/hippogridmanager.cpp b/indra/newview/hippogridmanager.cpp index b0fd2b254..6f01c2a86 100644 --- a/indra/newview/hippogridmanager.cpp +++ b/indra/newview/hippogridmanager.cpp @@ -260,99 +260,6 @@ void HippoGridInfo::setDirectoryFee(int fee) // ******************************************************************** // Grid Info -std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const -{ - // Don't worry about whether or not mSearchUrl is empty here anymore -- MC - if (is_web) - { - if (mPlatform == PLATFORM_SECONDLIFE) - { - // Second Life defaults - if (ty == SEARCH_ALL_EMPTY) - { - return gSavedSettings.getString("SearchURLDefault"); - } - else if (ty == SEARCH_ALL_QUERY) - { - return gSavedSettings.getString("SearchURLQuery"); - } - else if (ty == SEARCH_ALL_TEMPLATE) - { - return gSavedSettings.getString("SearchURLSuffix2"); - } - else - { - llinfos << "Illegal search URL type " << ty << llendl; - return ""; - } - } - else if (!mSearchUrl.empty()) - { - // Search url sent to us in the login response - if (ty == SEARCH_ALL_EMPTY) - { - return (mSearchUrl); - } - else if (ty == SEARCH_ALL_QUERY) - { - return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"); - } - else if (ty == SEARCH_ALL_TEMPLATE) - { - return "lang=[LANG]&mat=[MATURITY]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]&dice=[DICE]"; - } - else - { - llinfos << "Illegal search URL type " << ty << llendl; - return ""; - } - } - else - { - // OpenSim and other web search defaults - if (ty == SEARCH_ALL_EMPTY) - { - return gSavedSettings.getString("SearchURLDefaultOpenSim"); - } - else if (ty == SEARCH_ALL_QUERY) - { - return gSavedSettings.getString("SearchURLQueryOpenSim"); - } - else if (ty == SEARCH_ALL_TEMPLATE) - { - return gSavedSettings.getString("SearchURLSuffixOpenSim"); - } - else - { - llinfos << "Illegal search URL type " << ty << llendl; - return ""; - } - } - } - else - { - // Use the old search all - if (ty == SEARCH_ALL_EMPTY) - { - return (mSearchUrl + "panel=All&"); - } - else if (ty == SEARCH_ALL_QUERY) - { - return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"); - } - else if (ty == SEARCH_ALL_TEMPLATE) - { - return "lang=[LANG]&m=[MATURITY]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]&dice=[DICE]"; - } - else - { - llinfos << "Illegal search URL type " << ty << llendl; - return ""; - } - } -} - - //static void HippoGridInfo::onXmlElementStart(void* userData, const XML_Char* name, const XML_Char** atts) { diff --git a/indra/newview/hippogridmanager.h b/indra/newview/hippogridmanager.h index 4416e8598..a33970e28 100644 --- a/indra/newview/hippogridmanager.h +++ b/indra/newview/hippogridmanager.h @@ -31,11 +31,6 @@ public: PLATFORM_SECONDLIFE, PLATFORM_LAST }; - enum SearchType { - SEARCH_ALL_EMPTY, - SEARCH_ALL_QUERY, - SEARCH_ALL_TEMPLATE - }; explicit HippoGridInfo(const std::string& gridName); @@ -58,7 +53,6 @@ public: const std::string& getSearchUrl() const { return mSearchUrl; } const std::string& getGridMessage() const { return mGridMessage; } const std::string& getVoiceConnector() const { return mVoiceConnector; } - std::string getSearchUrl(SearchType ty, bool is_web) const; bool isRenderCompat() const { return mRenderCompat; } std::string getGridNick() const; int getMaxAgentGroups() const { return mMaxAgentGroups; } diff --git a/indra/newview/lfsimfeaturehandler.cpp b/indra/newview/lfsimfeaturehandler.cpp index e4b6408e2..897dbe655 100644 --- a/indra/newview/lfsimfeaturehandler.cpp +++ b/indra/newview/lfsimfeaturehandler.cpp @@ -26,6 +26,8 @@ LFSimFeatureHandler::LFSimFeatureHandler() : mSupportsExport(false) +, mDestinationGuideURL(gSavedSettings.getString("ShowcaseURLDefault")) +, mSearchURL(gSavedSettings.getString("SearchURL")) , mSayRange(20) , mShoutRange(100) , mWhisperRange(10) @@ -66,6 +68,7 @@ void LFSimFeatureHandler::setSupportedFeatures() // http://opensimulator.org/wiki/SimulatorFeatures_Extras const LLSD& extras(info["OpenSimExtras"]); mSupportsExport = extras.has("ExportSupported") ? extras["ExportSupported"].asBoolean() : false; + mDestinationGuideURL = extras.has("destination-guide-url") ? extras["destination-guide-url"].asString() : ""; mMapServerURL = extras.has("map-server-url") ? extras["map-server-url"].asString() : ""; mSearchURL = extras.has("search-server-url") ? extras["search-server-url"].asString() : ""; mSayRange = extras.has("say-range") ? extras["say-range"].asInteger() : 20; @@ -84,27 +87,32 @@ void LFSimFeatureHandler::setSupportedFeatures() } } -boost::signals2::connection LFSimFeatureHandler::setSupportsExportCallback(const boost::signals2::signal::slot_type& slot) +boost::signals2::connection LFSimFeatureHandler::setSupportsExportCallback(const SignaledType::slot_t& slot) { return mSupportsExport.connect(slot); } -boost::signals2::connection LFSimFeatureHandler::setSearchURLCallback(const boost::signals2::signal::slot_type& slot) +boost::signals2::connection LFSimFeatureHandler::setDestinationGuideURLCallback(const SignaledType::slot_t& slot) +{ + return mDestinationGuideURL.connect(slot); +} + +boost::signals2::connection LFSimFeatureHandler::setSearchURLCallback(const SignaledType::slot_t& slot) { return mSearchURL.connect(slot); } -boost::signals2::connection LFSimFeatureHandler::setSayRangeCallback(const boost::signals2::signal::slot_type& slot) +boost::signals2::connection LFSimFeatureHandler::setSayRangeCallback(const SignaledType::slot_t& slot) { return mSayRange.connect(slot); } -boost::signals2::connection LFSimFeatureHandler::setShoutRangeCallback(const boost::signals2::signal::slot_type& slot) +boost::signals2::connection LFSimFeatureHandler::setShoutRangeCallback(const SignaledType::slot_t& slot) { return mShoutRange.connect(slot); } -boost::signals2::connection LFSimFeatureHandler::setWhisperRangeCallback(const boost::signals2::signal::slot_type& slot) +boost::signals2::connection LFSimFeatureHandler::setWhisperRangeCallback(const SignaledType::slot_t& slot) { return mWhisperRange.connect(slot); } diff --git a/indra/newview/lfsimfeaturehandler.h b/indra/newview/lfsimfeaturehandler.h index d26983fcd..371ec5e0c 100644 --- a/indra/newview/lfsimfeaturehandler.h +++ b/indra/newview/lfsimfeaturehandler.h @@ -21,21 +21,22 @@ #include "llsingleton.h" #include "llpermissions.h" // ExportPolicy -template > +template > class SignaledType { public: SignaledType() : mValue() {} SignaledType(Type b) : mValue(b) {} - boost::signals2::connection connect(const typename Signal::slot_type& slot) { return mSignal.connect(slot); } + typedef typename Signal::slot_type slot_t; + boost::signals2::connection connect(const slot_t& slot) { return mSignal.connect(slot); } SignaledType& operator =(Type val) { if (val != mValue) { mValue = val; - mSignal(); + mSignal(val); } return *this; } @@ -57,14 +58,16 @@ public: void setSupportedFeatures(); // Connection setters - boost::signals2::connection setSupportsExportCallback(const boost::signals2::signal::slot_type& slot); - boost::signals2::connection setSearchURLCallback(const boost::signals2::signal::slot_type& slot); - boost::signals2::connection setSayRangeCallback(const boost::signals2::signal::slot_type& slot); - boost::signals2::connection setShoutRangeCallback(const boost::signals2::signal::slot_type& slot); - boost::signals2::connection setWhisperRangeCallback(const boost::signals2::signal::slot_type& slot); + boost::signals2::connection setSupportsExportCallback(const SignaledType::slot_t& slot); + boost::signals2::connection setDestinationGuideURLCallback(const SignaledType::slot_t& slot); + boost::signals2::connection setSearchURLCallback(const SignaledType::slot_t& slot); + boost::signals2::connection setSayRangeCallback(const SignaledType::slot_t& slot); + boost::signals2::connection setShoutRangeCallback(const SignaledType::slot_t& slot); + boost::signals2::connection setWhisperRangeCallback(const SignaledType::slot_t& slot); // Accessors bool simSupportsExport() const { return mSupportsExport; } + std::string destinationGuideURL() const { return mDestinationGuideURL; } std::string mapServerURL() const { return mMapServerURL; } std::string searchURL() const { return mSearchURL; } U32 sayRange() const { return mSayRange; } @@ -75,6 +78,7 @@ public: private: // SignaledTypes SignaledType mSupportsExport; + SignaledType mDestinationGuideURL; std::string mMapServerURL; SignaledType mSearchURL; SignaledType mSayRange; diff --git a/indra/newview/llfloaterdirectory.cpp b/indra/newview/llfloaterdirectory.cpp index 3bd2932d9..ce2f71e16 100644 --- a/indra/newview/llfloaterdirectory.cpp +++ b/indra/newview/llfloaterdirectory.cpp @@ -53,12 +53,26 @@ #include "lluictrlfactory.h" #include "hippogridmanager.h" +#include "lfsimfeaturehandler.h" #include "llenvmanager.h" #include "llnotificationsutil.h" #include "llviewerregion.h" const char* market_panel = "market_panel"; +void set_tab_visible(LLTabContainer* container, LLPanel* tab, bool visible, LLPanel* prev_tab) +{ + if (visible) + { + if (prev_tab) + container->lockTabs(container->getIndexForPanel(prev_tab) + 1); + container->addTabPanel(tab, tab->getLabel(), false, 0, false, LLTabContainer::START); + if (prev_tab) + container->unlockTabs(); + } + else container->removeTabPanel(tab); +} + class LLPanelDirMarket : public LLPanelDirFind { public: @@ -205,10 +219,7 @@ LLFloaterDirectory::LLFloaterDirectory(const std::string& name) mPanelClassifiedp = NULL; // Build the floater with our tab panel classes - - bool enableWebSearch = gHippoGridManager->getConnectedGrid()->isSecondLife() || - !gHippoGridManager->getConnectedGrid()->getSearchUrl().empty(); - bool enableClassicAllSearch = !gHippoGridManager->getConnectedGrid()->isSecondLife(); + bool secondlife = gHippoGridManager->getConnectedGrid()->isSecondLife(); LLCallbackMap::map_t factory_map; factory_map["classified_panel"] = LLCallbackMap(createClassified, this); @@ -218,15 +229,13 @@ LLFloaterDirectory::LLFloaterDirectory(const std::string& name) factory_map["people_panel"] = LLCallbackMap(createPeople, this); factory_map["groups_panel"] = LLCallbackMap(createGroups, this); factory_map[market_panel] = LLCallbackMap(LLPanelDirMarket::create, this); - if (enableWebSearch) + factory_map["find_all_panel"] = LLCallbackMap(createFindAll, this); + factory_map["showcase_panel"] = LLCallbackMap(createShowcase, this); + if (secondlife) { - // web search and showcase only for SecondLife - factory_map["find_all_panel"] = LLCallbackMap(createFindAll, this); - factory_map["showcase_panel"] = LLCallbackMap(createShowcase, this); - if (!enableClassicAllSearch) factory_map["web_panel"] = LLCallbackMap(createWebPanel, this); + factory_map["web_panel"] = LLCallbackMap(createWebPanel, this); } - - if (enableClassicAllSearch) + else { factory_map["find_all_old_panel"] = LLCallbackMap(createFindAllOld, this); } @@ -240,28 +249,33 @@ LLFloaterDirectory::LLFloaterDirectory(const std::string& name) factory_map["Panel Avatar"] = LLCallbackMap(createPanelAvatar, this); - if (enableWebSearch) - { - mCommitCallbackRegistrar.add("Search.WebFloater", boost::bind(&LLFloaterSearch::open, boost::bind(LLFloaterSearch::getInstance))); - if (enableClassicAllSearch) - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_directory3.xml", &factory_map); - else - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_directory.xml", &factory_map); - } - else - { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_directory2.xml", &factory_map); - } + mCommitCallbackRegistrar.add("Search.WebFloater", boost::bind(&LLFloaterSearch::open, boost::bind(LLFloaterSearch::getInstance))); + LLUICtrlFactory::getInstance()->buildFloater(this, "floater_directory.xml", &factory_map); moveResizeHandlesToFront(); - if(mPanelAvatarp) + if (mPanelAvatarp) { mPanelAvatarp->selectTab(0); } LLTabContainer* container = getChild("Directory Tabs"); - if (enableClassicAllSearch) + if (secondlife) { + container->removeTabPanel(getChild("find_all_old_panel")); // Not used + } + else + { + container->removeTabPanel(getChild("web_panel")); // Not needed + LLPanel* panel(getChild("find_all_panel")); + LLPanel* prev_tab(getChild("find_all_old_panel")); + LFSimFeatureHandler& inst(LFSimFeatureHandler::instance()); + set_tab_visible(container, panel, !inst.searchURL().empty(), prev_tab); + inst.setSearchURLCallback(boost::bind(set_tab_visible, container, panel, !boost::bind(&std::string::empty, _1), prev_tab)); + panel = getChild("showcase_panel"); + prev_tab = getChild("events_panel"); + set_tab_visible(container, panel, !inst.destinationGuideURL().empty(), prev_tab); + inst.setDestinationGuideURLCallback(boost::bind(set_tab_visible, container, panel, !boost::bind(&std::string::empty, _1), prev_tab)); + LLPanelDirMarket* marketp = static_cast(container->getPanelByName(market_panel)); container->removeTabPanel(marketp); // Until we get a MarketPlace URL, tab is removed. marketp->handleRegionChange(container); @@ -452,7 +466,7 @@ void LLFloaterDirectory::searchInAll(const std::string& search_text) void LLFloaterDirectory::showFindAll(const std::string& search_text) { - showPanel("find_all_panel"); + showPanel(LFSimFeatureHandler::instance().searchURL().empty() ? "find_all_old_panel" : "find_all_panel"); LLPanelDirFindAllInterface::search(sInstance->mFindAllPanel, search_text); } @@ -589,12 +603,16 @@ void LLFloaterDirectory::toggleFind(void*) if (!sInstance) { std::string panel = gSavedSettings.getString("LastFindPanel"); - bool hasWebSearch = gHippoGridManager->getConnectedGrid()->isSecondLife() || - !gHippoGridManager->getConnectedGrid()->getSearchUrl().empty(); - if (hasWebSearch && (panel == "find_all_panel" || panel == "showcase_panel")) + if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) { - panel = "find_all_old_panel"; + LFSimFeatureHandler& inst(LFSimFeatureHandler::instance()); + if (panel == "web_panel" + || (inst.searchURL().empty() && panel == "find_all_panel") + || (inst.destinationGuideURL().empty() && panel == "showcase_panel")) + panel = "find_all_old_panel"; } + else if (panel == "find_all_old_panel") panel = "find_all_panel"; + showPanel(panel); // HACK: force query for today's events diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 5d51959d3..67e9421a5 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -144,6 +144,7 @@ BOOL LLFloaterSearch::postBuild() setRectControl("FloaterSearchRect"); applyRectControl(); search(SearchQuery()); + gSavedSettings.getControl("SearchURL")->getSignal()->connect(boost::bind(&LLFloaterSearch::search, this, SearchQuery())); return TRUE; } diff --git a/indra/newview/llpaneldirfind.cpp b/indra/newview/llpaneldirfind.cpp index 2903355f5..9d862afd8 100644 --- a/indra/newview/llpaneldirfind.cpp +++ b/indra/newview/llpaneldirfind.cpp @@ -65,6 +65,7 @@ #include "llpaneldirbrowser.h" #include "hippogridmanager.h" +#include "lfsimfeaturehandler.h" #if LL_MSVC // disable boost::lexical_cast warning @@ -76,6 +77,92 @@ //--------------------------------------------------------------------------- // LLPanelDirFindAll - Google search appliance based search //--------------------------------------------------------------------------- +namespace +{ + std::string getSearchUrl() + { + return LFSimFeatureHandler::instance().searchURL(); + } + enum SearchType + { + SEARCH_ALL_EMPTY, + SEARCH_ALL_QUERY, + SEARCH_ALL_TEMPLATE + }; + std::string getSearchUrl(SearchType ty, bool is_web) + { + const std::string mSearchUrl(getSearchUrl()); + if (is_web) + { + if (gHippoGridManager->getConnectedGrid()->isSecondLife()) + { + // Second Life defaults + if (ty == SEARCH_ALL_EMPTY) + { + return gSavedSettings.getString("SearchURLDefault"); + } + else if (ty == SEARCH_ALL_QUERY) + { + return gSavedSettings.getString("SearchURLQuery"); + } + else if (ty == SEARCH_ALL_TEMPLATE) + { + return gSavedSettings.getString("SearchURLSuffix2"); + } + } + else if (!mSearchUrl.empty()) + { + // Search url sent to us in the login response + if (ty == SEARCH_ALL_EMPTY) + { + return mSearchUrl; + } + else if (ty == SEARCH_ALL_QUERY) + { + return mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"; + } + else if (ty == SEARCH_ALL_TEMPLATE) + { + return "lang=[LANG]&mat=[MATURITY]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]&dice=[DICE]"; + } + } + else + { + // OpenSim and other web search defaults + if (ty == SEARCH_ALL_EMPTY) + { + return gSavedSettings.getString("SearchURLDefaultOpenSim"); + } + else if (ty == SEARCH_ALL_QUERY) + { + return gSavedSettings.getString("SearchURLQueryOpenSim"); + } + else if (ty == SEARCH_ALL_TEMPLATE) + { + return gSavedSettings.getString("SearchURLSuffixOpenSim"); + } + } + } + else + { + // Use the old search all + if (ty == SEARCH_ALL_EMPTY) + { + return mSearchUrl + "panel=All&"; + } + else if (ty == SEARCH_ALL_QUERY) + { + return mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"; + } + else if (ty == SEARCH_ALL_TEMPLATE) + { + return "lang=[LANG]&m=[MATURITY]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]&dice=[DICE]"; + } + } + llinfos << "Illegal search URL type " << ty << llendl; + return ""; + } +} class LLPanelDirFindAll : public LLPanelDirFind @@ -90,6 +177,7 @@ public: LLPanelDirFindAll::LLPanelDirFindAll(const std::string& name, LLFloaterDirectory* floater) : LLPanelDirFind(name, floater, "find_browser") { + LFSimFeatureHandler::getInstance()->setSearchURLCallback(boost::bind(&LLPanelDirFindAll::navigateToDefaultPage, this)); } //--------------------------------------------------------------------------- @@ -264,48 +352,38 @@ void LLPanelDirFind::focus() void LLPanelDirFind::navigateToDefaultPage() { - std::string start_url = ""; + bool showcase(mBrowserName == "showcase_browser"); + std::string start_url = showcase ? LFSimFeatureHandler::instance().destinationGuideURL() : getSearchUrl(); + bool secondlife(gHippoGridManager->getConnectedGrid()->isSecondLife()); // Note: we use the web panel in OpenSim as well as Second Life -- MC - if (gHippoGridManager->getConnectedGrid()->getSearchUrl().empty() && - !gHippoGridManager->getConnectedGrid()->isSecondLife()) + if (start_url.empty() && !secondlife) { // OS-based but doesn't have its own web search url -- MC start_url = gSavedSettings.getString("SearchURLDefaultOpenSim"); } else { - if (gHippoGridManager->getConnectedGrid()->isSecondLife()) + if (!showcase) { - if (mBrowserName == "showcase_browser") - { - // note that the showcase URL in floater_directory.xml is no longer used - start_url = gSavedSettings.getString("ShowcaseURLDefault"); - } - else - { + if (secondlife) // Legacy Web Search start_url = gSavedSettings.getString("SearchURLDefault"); - } - } - else - { - // OS-based but has its own web search url -- MC - start_url = gHippoGridManager->getConnectedGrid()->getSearchUrl(); - start_url += "panel=" + getName() + "&"; - } + else // OS-based but has its own web search url -- MC + start_url += "panel=" + getName() + "&"; - if (hasChild("incmature")) - { - bool inc_pg = childGetValue("incpg").asBoolean(); - bool inc_mature = childGetValue("incmature").asBoolean(); - bool inc_adult = childGetValue("incadult").asBoolean(); - if (!(inc_pg || inc_mature || inc_adult)) + if (hasChild("incmature")) { - // if nothing's checked, just go for pg; we don't notify in - // this case because it's a default page. - inc_pg = true; + bool inc_pg = getChildView("incpg")->getValue().asBoolean(); + bool inc_mature = getChildView("incmature")->getValue().asBoolean(); + bool inc_adult = getChildView("incadult")->getValue().asBoolean(); + if (!(inc_pg || inc_mature || inc_adult)) + { + // if nothing's checked, just go for pg; we don't notify in + // this case because it's a default page. + inc_pg = true; + } + + start_url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult, true); } - - start_url += getSearchURLSuffix(inc_pg, inc_mature, inc_adult, true); } } @@ -323,7 +401,7 @@ const std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, std::string url; if (search_text.empty()) { - url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_EMPTY, is_web); + url = getSearchUrl(SEARCH_ALL_EMPTY, is_web); } else { @@ -348,7 +426,7 @@ const std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, "-._~$+!*'()"; std::string query = LLURI::escape(search_text_with_plus, allowed); - url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_QUERY, is_web); + url = getSearchUrl(SEARCH_ALL_QUERY, is_web); std::string substring = "[QUERY]"; std::string::size_type where = url.find(substring); if (where != std::string::npos) @@ -373,14 +451,13 @@ const std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, const std::string LLPanelDirFind::getSearchURLSuffix(bool inc_pg, bool inc_mature, bool inc_adult, bool is_web) const { - std::string url = gHippoGridManager->getConnectedGrid()->getSearchUrl(HippoGridInfo::SEARCH_ALL_TEMPLATE, is_web); + std::string url = getSearchUrl(SEARCH_ALL_TEMPLATE, is_web); llinfos << "Suffix template " << url << llendl; if (!url.empty()) { // Note: opensim's default template (SearchURLSuffixOpenSim) is currently empty -- MC - if (gHippoGridManager->getConnectedGrid()->isSecondLife() || - !gHippoGridManager->getConnectedGrid()->getSearchUrl().empty()) + if (gHippoGridManager->getConnectedGrid()->isSecondLife() || !getSearchUrl().empty()) { // if the mature checkbox is unchecked, modify query to remove // terms with given phrase from the result set @@ -524,11 +601,14 @@ LLPanelDirFindAll* LLPanelDirFindAllInterface::create(LLFloaterDirectory* floate return new LLPanelDirFindAll("find_all_panel", floater); } +static LLPanelDirFindAllOld* sFindAllOld = NULL; // static void LLPanelDirFindAllInterface::search(LLPanelDirFindAll* panel, const std::string& search_text) { - panel->search(search_text); + bool secondlife(gHippoGridManager->getConnectedGrid()->isSecondLife()); + if (secondlife || !getSearchUrl().empty()) panel->search(search_text); + if (!secondlife && sFindAllOld) sFindAllOld->search(search_text); } // static @@ -544,6 +624,7 @@ void LLPanelDirFindAllInterface::focus(LLPanelDirFindAll* panel) LLPanelDirFindAllOld::LLPanelDirFindAllOld(const std::string& name, LLFloaterDirectory* floater) : LLPanelDirBrowser(name, floater) { + sFindAllOld = this; mMinSearchChars = 3; } @@ -565,6 +646,7 @@ BOOL LLPanelDirFindAllOld::postBuild() LLPanelDirFindAllOld::~LLPanelDirFindAllOld() { + sFindAllOld = NULL; // Children all cleaned up by default view destructor. } @@ -575,12 +657,18 @@ void LLPanelDirFindAllOld::draw() LLPanelDirBrowser::draw(); } +void LLPanelDirFindAllOld::search(const std::string& query) +{ + getChildView("name")->setValue(query); + onClickSearch(); +} + void LLPanelDirFindAllOld::onClickSearch() { if (childGetValue("name").asString().length() < mMinSearchChars) { return; - }; + } BOOL inc_pg = childGetValue("incpg").asBoolean(); BOOL inc_mature = childGetValue("incmature").asBoolean(); diff --git a/indra/newview/llpaneldirfind.h b/indra/newview/llpaneldirfind.h index 8ec0e51aa..866c330a8 100644 --- a/indra/newview/llpaneldirfind.h +++ b/indra/newview/llpaneldirfind.h @@ -99,6 +99,7 @@ public: /*virtual*/ void draw(); + void search(const std::string& query); void onClickSearch(); }; diff --git a/indra/newview/llpaneldirpopular.cpp b/indra/newview/llpaneldirpopular.cpp index ddb9d3aa5..fa678d416 100644 --- a/indra/newview/llpaneldirpopular.cpp +++ b/indra/newview/llpaneldirpopular.cpp @@ -33,11 +33,13 @@ #include "llviewerprecompiledheaders.h" #include "llpaneldirpopular.h" +#include "lfsimfeaturehandler.h" LLPanelDirPopular::LLPanelDirPopular(const std::string& name, LLFloaterDirectory* floater) : LLPanelDirFind(name, floater, "showcase_browser") { // *NOTE: This is now the "Showcase" section + LFSimFeatureHandler::instance().setSearchURLCallback(boost::bind(&LLPanelDirPopular::navigateToDefaultPage, this)); } // virtual diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index f76e3fa7d..df84f6917 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -60,6 +60,7 @@ #include "hippolimits.h" #include "floaterao.h" #include "statemachine/aifilepicker.h" +#include "lfsimfeaturehandler.h" #include "llares.h" #include "llavatarnamecache.h" @@ -326,6 +327,12 @@ void callback_cache_name(const LLUUID& id, const std::string& full_name, bool is dialog_refresh_all(); } +void simfeature_debug_update(const std::string& val, const std::string& setting) +{ + //if (!val.empty()) // Singu Note: Should we only update the setting if not empty? + gSavedSettings.setString(setting, val); +} + // // exported functionality // @@ -1257,6 +1264,9 @@ bool idle_startup() requested_options.push_back("tutorial_setting"); requested_options.push_back("login-flags"); requested_options.push_back("global-textures"); + // Opensim requested options + requested_options.push_back("destination_guide_url"); + // if(gSavedSettings.getBOOL("ConnectAsGod")) { gSavedSettings.setBOOL("UseDebugMenus", TRUE); @@ -1575,7 +1585,8 @@ bool idle_startup() if (process_login_success_response(password, first_sim_size_x, first_sim_size_y)) { std::string name = firstname; - if (!gHippoGridManager->getCurrentGrid()->isSecondLife() || + bool secondlife(gHippoGridManager->getCurrentGrid()->isSecondLife()); + if (!secondlife || !boost::algorithm::iequals(lastname, "Resident")) { name += " " + lastname; @@ -1583,6 +1594,13 @@ bool idle_startup() if (gSavedSettings.getBOOL("LiruGridInTitle")) gWindowTitle += "- " + gHippoGridManager->getCurrentGrid()->getGridName() + " "; gViewerWindow->getWindow()->setTitle(gWindowTitle += "- " + name); + if (!secondlife) + { + LFSimFeatureHandler& inst(LFSimFeatureHandler::instance()); + inst.setDestinationGuideURLCallback(boost::bind(simfeature_debug_update, _1, "ShowcaseURLDefault")); + inst.setSearchURLCallback(boost::bind(simfeature_debug_update, _1, "SearchURL")); + } + // Pass the user information to the voice chat server interface. LLVoiceClient::getInstance()->userAuthorized(name, gAgentID); // create the default proximal channel @@ -4083,7 +4101,8 @@ bool process_login_success_response(std::string& password, U32& first_sim_size_x LLWorldMap::gotMapServerURL(true); } - if(gHippoGridManager->getConnectedGrid()->isOpenSimulator()) + bool opensim = gHippoGridManager->getConnectedGrid()->isOpenSimulator(); + if (opensim) { std::string web_profile_url = response["web_profile_url"]; //if(!web_profile_url.empty()) // Singu Note: We're using this to check if this grid supports web profiles at all, so set empty if empty. @@ -4176,7 +4195,12 @@ bool process_login_success_response(std::string& password, U32& first_sim_size_x if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setPasswordUrl(tmp); tmp = response["search"].asString(); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp); - if (gHippoGridManager->getConnectedGrid()->isOpenSimulator()) gSavedSettings.setString("SearchURL", tmp); // Singu Note: For web search purposes, always set this setting + else if (opensim) tmp = gHippoGridManager->getConnectedGrid()->getSearchUrl(); // Fallback from grid info response for setting + if (opensim) + { + gSavedSettings.setString("SearchURL", tmp); // Singu Note: For web search purposes, always set this setting + gSavedSettings.setString("ShowcaseURLDefault", response["destination_guide_url"].asString()); + } tmp = response["currency"].asString(); if (!tmp.empty()) { diff --git a/indra/newview/skins/default/xui/de/floater_directory.xml b/indra/newview/skins/default/xui/de/floater_directory.xml index 4aaf3e691..7dfa569bd 100644 --- a/indra/newview/skins/default/xui/de/floater_directory.xml +++ b/indra/newview/skins/default/xui/de/floater_directory.xml @@ -1,6 +1,31 @@ + + Suchen... + Nicht gefunden. + + Loading... Done - http://search.secondlife.com/ + [APP_SITE]/404 http://search.secondlife.com/ diff --git a/indra/newview/skins/default/xui/en-us/floater_directory2.xml b/indra/newview/skins/default/xui/en-us/floater_directory2.xml deleted file mode 100644 index 21afeea9c..000000000 --- a/indra/newview/skins/default/xui/en-us/floater_directory2.xml +++ /dev/null @@ -1,652 +0,0 @@ - - - - - - Searching... - - - None Found. - - + + + + + + [RES_X] x [RES_Y] From 21d54edeb9a6bc4fbf147155e9d1024af8e78256 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Thu, 7 Aug 2014 20:29:12 -0400 Subject: [PATCH 221/242] Per-slider reset buttons? Sure. Adds callback to registrar: "Prefs.Reset", pass debug setting name as parameter. --- indra/newview/llfloaterpreference.cpp | 6 +++++ indra/newview/llpaneldisplay.cpp | 3 ++- .../xui/en-us/panel_preferences_graphics1.xml | 25 +++++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index a452d1368..403b04099 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -341,9 +341,15 @@ void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_vi ////////////////////////////////////////////// // LLFloaterPreference +void reset_to_default(const std::string& control) +{ + LLUI::getControlControlGroup(control).getControl(control)->resetToDefault(true); +} + LLFloaterPreference::LLFloaterPreference() { mExitWithoutSaving = false; + mCommitCallbackRegistrar.add("Prefs.Reset", boost::bind(reset_to_default, _2)); LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preferences.xml"); } diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp index 93978162c..1d4e23ded 100644 --- a/indra/newview/llpaneldisplay.cpp +++ b/indra/newview/llpaneldisplay.cpp @@ -97,6 +97,7 @@ const F32 MIN_USER_FAR_CLIP = 64.f; const S32 ASPECT_RATIO_STR_LEN = 100; +void reset_to_default(const std::string& control); void reset_all_to_default(const LLView* panel) { LLView::child_list_const_iter_t end(panel->endChild()); @@ -105,7 +106,7 @@ void reset_all_to_default(const LLView* panel) const std::string& control_name((*i)->getControlName()); if (control_name.empty()) continue; if (control_name == "RenderDepthOfField") continue; // Don't touch render settings *sigh* hack - LLUI::getControlControlGroup(control_name).getControl(control_name)->resetToDefault(true); + reset_to_default(control_name); } } diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml index 04f20c2be..a0c5551d4 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml @@ -141,11 +141,26 @@ when the Atmospheric Shaders are enabled. - - - - - + + + + + + + + + From acb093c277d7c1e0771acab219a7c811159317a9 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Thu, 7 Aug 2014 20:37:03 -0400 Subject: [PATCH 222/242] Media Filter code cleanup --- indra/newview/llfloatermediafilter.cpp | 2 +- indra/newview/llmediafilter.cpp | 157 ++++++++++--------------- 2 files changed, 61 insertions(+), 98 deletions(-) diff --git a/indra/newview/llfloatermediafilter.cpp b/indra/newview/llfloatermediafilter.cpp index 3384b05a9..3b636484b 100644 --- a/indra/newview/llfloatermediafilter.cpp +++ b/indra/newview/llfloatermediafilter.cpp @@ -74,7 +74,7 @@ void LLFloaterMediaFilter::updateLists(LLMediaFilter::EMediaList list_type) { bool white(list_type == LLMediaFilter::WHITELIST); const LLMediaFilter& inst(LLMediaFilter::instance()); - LLMediaFilter::string_list_t list = white ? inst.getWhiteList() : inst.getBlackList(); + const LLMediaFilter::string_list_t& list = white ? inst.getWhiteList() : inst.getBlackList(); LLScrollListCtrl* scroll(white ? mWhitelist : mBlacklist); scroll->clearRows(); for (LLMediaFilter::string_list_t::const_iterator itr = list.begin(); itr != list.end(); ++itr) diff --git a/indra/newview/llmediafilter.cpp b/indra/newview/llmediafilter.cpp index 9d5dacf1c..5521711d4 100644 --- a/indra/newview/llmediafilter.cpp +++ b/indra/newview/llmediafilter.cpp @@ -56,7 +56,7 @@ void LLMediaFilter::filterMediaUrl(LLParcel* parcel) const std::string domain = extractDomain(url); mCurrentParcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); - U32 enabled = gSavedSettings.getU32("MediaFilterEnable"); + U32 enabled = gSavedSettings.getU32("MediaFilterEnable"); if (enabled > 1 && (filter(domain, WHITELIST) || filter(url, WHITELIST))) { @@ -104,7 +104,7 @@ void LLMediaFilter::filterAudioUrl(const std::string& url) const std::string domain = extractDomain(url); mCurrentParcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); - U32 enabled = gSavedSettings.getU32("MediaFilterEnable"); + U32 enabled = gSavedSettings.getU32("MediaFilterEnable"); if (enabled > 1 && (filter(domain, WHITELIST) || filter(url, WHITELIST))) { @@ -141,7 +141,7 @@ void LLMediaFilter::filterAudioUrl(const std::string& url) bool LLMediaFilter::filter(const std::string& url, EMediaList list) { - const string_list_t p_list = (list == WHITELIST) ? mWhiteList : mBlackList; + const string_list_t& p_list = (list == WHITELIST) ? mWhiteList : mBlackList; string_list_t::const_iterator find_itr = std::find(p_list.begin(), p_list.end(), url); return (find_itr != p_list.end()); } @@ -149,60 +149,34 @@ bool LLMediaFilter::filter(const std::string& url, EMediaList list) // List bizznizz void LLMediaFilter::addToMediaList(const std::string& in_url, EMediaList list, bool extract) { - std::string url = extract ? extractDomain(in_url) : in_url; + const std::string url = extract ? extractDomain(in_url) : in_url; if (url.empty()) { LL_INFOS("MediaFilter") << "No url found. Can't add to list." << LL_ENDL; return; } - switch (list) + string_list_t& p_list(list == WHITELIST ? mWhiteList : mBlackList); + // Check for duplicates + for (string_list_t::const_iterator itr = p_list.begin(); itr != p_list.end(); ++itr) { - case WHITELIST: - // Check for duplicates - for (string_list_t::const_iterator itr = mWhiteList.begin(); itr != mWhiteList.end(); ++itr) - { - if (url == *itr) - { - LL_INFOS("MediaFilter") << "URL " << url << " already in list!" << LL_ENDL; - return; - } - } - mWhiteList.push_back(url); - mMediaListUpdate(WHITELIST); - break; - case BLACKLIST: - for (string_list_t::const_iterator itr = mBlackList.begin(); itr != mBlackList.end(); ++itr) - { - if (url == *itr) - { - LL_INFOS("MediaFilter") << "URL " << url << "already in list!" << LL_ENDL; - return; - } - } - mBlackList.push_back(url); - mMediaListUpdate(BLACKLIST); - break; + if (url == *itr) + { + LL_INFOS("MediaFilter") << "URL " << url << " already in list!" << LL_ENDL; + return; + } } + p_list.push_back(url); + mMediaListUpdate(list); saveMediaFilterToDisk(); } void LLMediaFilter::removeFromMediaList(string_vec_t domains, EMediaList list) { if (domains.empty()) return; - switch (list) - { - case WHITELIST: - for (string_vec_t::const_iterator itr = domains.begin(); itr != domains.end(); ++itr) - mWhiteList.remove(*itr); - mMediaListUpdate(WHITELIST); - break; - case BLACKLIST: - for (string_vec_t::const_iterator itr = domains.begin(); itr != domains.end(); ++itr) - mBlackList.remove(*itr); - mMediaListUpdate(BLACKLIST); - break; - } + for (string_vec_t::const_iterator itr = domains.begin(); itr != domains.end(); ++itr) + (list == WHITELIST ? mWhiteList : mBlackList).remove(*itr); + mMediaListUpdate(list); saveMediaFilterToDisk(); } @@ -242,25 +216,24 @@ void LLMediaFilter::loadMediaFilterFromDisk() } } +void medialist_to_llsd(const LLMediaFilter::string_list_t& list, LLSD& list_llsd, const LLSD& action) +{ + for (LLMediaFilter::string_list_t::const_iterator itr = list.begin(); itr != list.end(); ++itr) + { + LLSD item; + item["domain"] = *itr; + item["action"] = action; + list_llsd.append(item); + } +} + void LLMediaFilter::saveMediaFilterToDisk() const { const std::string medialist_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, MEDIALIST_XML); LLSD medialist_llsd; - for (string_list_t::const_iterator itr = mWhiteList.begin(); itr != mWhiteList.end(); ++itr) - { - LLSD item; - item["domain"] = *itr; - item["action"] = "allow"; // <- $*#@()&%@ - medialist_llsd.append(item); - } - for (string_list_t::const_iterator itr = mBlackList.begin(); itr != mBlackList.end(); ++itr) - { - LLSD item; - item["domain"] = *itr; - item["action"] = "deny"; // sigh. - medialist_llsd.append(item); - } + medialist_to_llsd(mWhiteList, medialist_llsd, "allow"); // <- $*#@()&%@ + medialist_to_llsd(mBlackList, medialist_llsd, "deny"); // sigh. llofstream medialist; medialist.open(medialist_filename); @@ -268,6 +241,30 @@ void LLMediaFilter::saveMediaFilterToDisk() const medialist.close(); } +void perform_queued_command(LLMediaFilter& inst) +{ + if (U32 command = inst.getQueuedMediaCommand()) + { + if (command == PARCEL_MEDIA_COMMAND_STOP) + { + LLViewerParcelMedia::stop(); + } + else if (command == PARCEL_MEDIA_COMMAND_PAUSE) + { + LLViewerParcelMedia::pause(); + } + else if (command == PARCEL_MEDIA_COMMAND_UNLOAD) + { + LLViewerParcelMedia::stop(); + } + else if (command == PARCEL_MEDIA_COMMAND_TIME) + { + LLViewerParcelMedia::seek(LLViewerParcelMedia::sMediaCommandTime); + } + inst.setQueuedMediaCommand(0); + } +} + bool handle_audio_filter_callback(const LLSD& notification, const LLSD& response, const std::string& url) { LLMediaFilter& inst(LLMediaFilter::instance()); @@ -335,26 +332,9 @@ bool handle_audio_filter_callback(const LLSD& notification, const LLSD& response if (queued_media) inst.filterMediaUrl(queued_media); } - else if (inst.getQueuedMediaCommand()) + else { - U32 command = inst.getQueuedMediaCommand(); - if (command == PARCEL_MEDIA_COMMAND_STOP) - { - LLViewerParcelMedia::stop(); - } - else if (command == PARCEL_MEDIA_COMMAND_PAUSE) - { - LLViewerParcelMedia::pause(); - } - else if (command == PARCEL_MEDIA_COMMAND_UNLOAD) - { - LLViewerParcelMedia::stop(); - } - else if (command == PARCEL_MEDIA_COMMAND_TIME) - { - LLViewerParcelMedia::seek(LLViewerParcelMedia::sMediaCommandTime); - } - inst.setQueuedMediaCommand(0); + perform_queued_command(inst); } return false; @@ -365,7 +345,7 @@ bool handle_media_filter_callback(const LLSD& notification, const LLSD& response LLMediaFilter& inst(LLMediaFilter::instance()); inst.setAlertStatus(false); S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - const std::string url = notification["payload"].asString(); + const std::string& url = notification["payload"].asString(); LLParcel* queue = inst.getQueuedMedia(); switch(option) { @@ -403,26 +383,9 @@ bool handle_media_filter_callback(const LLSD& notification, const LLSD& response inst.clearQueuedAudio(); inst.filterAudioUrl(audio_queue); } - else if (inst.getQueuedMediaCommand()) + else { - U32 command = inst.getQueuedMediaCommand(); - if (command == PARCEL_MEDIA_COMMAND_STOP) - { - LLViewerParcelMedia::stop(); - } - else if (command == PARCEL_MEDIA_COMMAND_PAUSE) - { - LLViewerParcelMedia::pause(); - } - else if (command == PARCEL_MEDIA_COMMAND_UNLOAD) - { - LLViewerParcelMedia::stop(); - } - else if (command == PARCEL_MEDIA_COMMAND_TIME) - { - LLViewerParcelMedia::seek(LLViewerParcelMedia::sMediaCommandTime); - } - inst.setQueuedMediaCommand(0); + perform_queued_command(inst); } return false; @@ -471,6 +434,6 @@ std::string extractDomain(const std::string& in_url) // Now map the whole thing to lowercase, since domain names aren't // case sensitive. - std::transform(url.begin(), url.end(),url.begin(), ::tolower); + std::transform(url.begin(), url.end(), url.begin(), ::tolower); return url; } From 4754c1322d4d74d10121370a518f4afb44f4478a Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Thu, 7 Aug 2014 21:56:25 -0400 Subject: [PATCH 223/242] This should probably be a size_t, perhaps this fixes the win64 mediafilter bug. --- indra/newview/llmediafilter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llmediafilter.cpp b/indra/newview/llmediafilter.cpp index 5521711d4..f96bcb7da 100644 --- a/indra/newview/llmediafilter.cpp +++ b/indra/newview/llmediafilter.cpp @@ -418,7 +418,7 @@ std::string extractDomain(const std::string& in_url) if (pos != std::string::npos) { - S32 count = url.size()-pos+1; + size_t count = url.size()-pos+1; url = url.substr(pos+1, count); } From d7d06c823446404e1b5cd994b53983c20c759e39 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 8 Aug 2014 07:07:51 -0400 Subject: [PATCH 224/242] Oh, and this one too, maybe it is fixed now? --- indra/newview/llmediafilter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llmediafilter.cpp b/indra/newview/llmediafilter.cpp index f96bcb7da..4d39b78bb 100644 --- a/indra/newview/llmediafilter.cpp +++ b/indra/newview/llmediafilter.cpp @@ -400,7 +400,7 @@ std::string extractDomain(const std::string& in_url) if (pos != std::string::npos) { - S32 count = url.size()-pos+2; + size_t count = url.size()-pos+2; url = url.substr(pos+2, count); } From 669fe29173c63ff71a8d7f64904f8b36ec1d6c3c Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 8 Aug 2014 08:26:48 -0400 Subject: [PATCH 225/242] Initialize members of LLMediaFilter, fixes win64 filter being broken. --- indra/newview/llmediafilter.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llmediafilter.cpp b/indra/newview/llmediafilter.cpp index 4d39b78bb..56d01e422 100644 --- a/indra/newview/llmediafilter.cpp +++ b/indra/newview/llmediafilter.cpp @@ -41,6 +41,10 @@ bool handle_media_filter_callback(const LLSD& notification, const LLSD& response std::string extractDomain(const std::string& in_url); LLMediaFilter::LLMediaFilter() +: mMediaCommandQueue(0) +, mCurrentParcel(NULL) +, mMediaQueue(NULL) +, mAlertActive(false) { loadMediaFilterFromDisk(); } From 90c5219be97c213d125e1bb08354b2dae51d5911 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 8 Aug 2014 08:43:24 -0400 Subject: [PATCH 226/242] Move Media Filter from the View menu to the Singularity menu. Moves Media Filter in all translations, no need for translators to worry~ Nomade, please translate the Singularity menu at your discretion.. in menu_viewer.xml --- indra/newview/skins/default/xui/de/menu_viewer.xml | 4 ++-- indra/newview/skins/default/xui/en-us/menu_viewer.xml | 9 ++++----- indra/newview/skins/default/xui/es/menu_viewer.xml | 6 +++--- indra/newview/skins/default/xui/fr/menu_viewer.xml | 4 +++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 4841e56e3..ff86604f5 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -95,7 +95,6 @@ - @@ -259,7 +258,7 @@ - + @@ -271,6 +270,7 @@ + diff --git a/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 458bb96c8..a9115f61c 100644 --- a/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -357,11 +357,6 @@ - - - - + + + + diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 24589cfe9..d4b53e57b 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -75,7 +75,6 @@ - @@ -215,7 +214,7 @@ - + @@ -224,9 +223,10 @@ + - + diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index dce04a84e..91b4c1b34 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -83,7 +83,6 @@ - @@ -243,4 +242,7 @@ + + + From 3b31fe91a65add978f8cd95fe729bfc46f27eacd Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 8 Aug 2014 14:52:52 -0400 Subject: [PATCH 227/242] Address Deltek's concern that the Open Attachment button wasn't changing text to just say save when the object is not the openable type. --- indra/newview/llpanelgroupnotices.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 74c591f1e..40e450dd7 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -53,6 +53,7 @@ #include "llscrolllistctrl.h" #include "llscrolllistitem.h" #include "lltextbox.h" +#include "lltrans.h" #include "roles_constants.h" #include "llviewerwindow.h" @@ -511,6 +512,7 @@ void LLPanelGroupNotices::onSelectNotice() lldebugs << "Item " << item->getUUID() << " selected." << llendl; } +bool is_openable(LLAssetType::EType type); void LLPanelGroupNotices::showNotice(const std::string& subject, const std::string& message, const bool& has_inventory, @@ -549,6 +551,7 @@ void LLPanelGroupNotices::showNotice(const std::string& subject, mViewInventoryName->setText(ss.str()); mBtnOpenAttachment->setEnabled(TRUE); + mBtnOpenAttachment->setLabel(LLTrans::getString(is_openable(inventory_offer->mType) ? "GroupNotifyOpenAttachment" : "GroupNotifySaveAttachment")); } else { From 54a6db146e5e736f7c77e7b7cbb85dfb576372a8 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 8 Aug 2014 14:57:14 -0400 Subject: [PATCH 228/242] Upon further consideration and a bit of feedback, the new matching common characters behavior of gesture autocomplete is probably bad, I've commented it out and brought back the old code. --- indra/newview/llgesturemgr.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 1cae093dc..517266097 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -1358,8 +1358,10 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str) { S32 in_len = in_str.length(); +#ifdef MATCH_COMMON_CHARS std::string rest_of_match = ""; std::string buf = ""; +#endif item_map_t::iterator it; for (it = mActive.begin(); it != mActive.end(); ++it) { @@ -1367,18 +1369,26 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str) if (gesture) { const std::string& trigger = gesture->getTrigger(); +#ifdef MATCH_COMMON_CHARS //return whole trigger, if received text equals to it if (!LLStringUtil::compareInsensitive(in_str, trigger)) { *out_str = trigger; return TRUE; } +#else + if (in_len > (S32)trigger.length()) continue; // too short, bail out +#endif //return common chars, if more than one trigger matches the prefix std::string trigger_trunc = trigger; LLStringUtil::truncate(trigger_trunc, in_len); if (!LLStringUtil::compareInsensitive(in_str, trigger_trunc)) { +#ifndef MATCH_COMMON_CHARS + *out_str = trigger; + return TRUE; +#else if (rest_of_match.compare("") == 0) { rest_of_match = trigger.substr(in_str.size()); @@ -1411,16 +1421,18 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str) { rest_of_match = buf; } - +#endif } } } +#ifdef MATCH_COMMON_CHARS if (!rest_of_match.empty()) { *out_str = in_str + rest_of_match; return TRUE; } +#endif return FALSE; } From 50d91d13be81ecde70e2e9d0432abb93a971be00 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Fri, 8 Aug 2014 16:26:40 -0400 Subject: [PATCH 229/242] Allow dragging and dropping to attached objects There's now a guard serverside that'll prevent the situation that would cause things to break in the past, so there's no reason not to have this. --- indra/newview/lltooldraganddrop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index c1ea44d7a..dfcee38e7 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1604,7 +1604,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL transfer = TRUE; } BOOL volume = (LL_PCODE_VOLUME == obj->getPCode()); - BOOL attached = obj->isAttachment(); + BOOL attached = false; // No longer necessary. BOOL unrestricted = ((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) ? TRUE : FALSE; // [RLVa:KB] - Checked: 2010-03-31 (RLVa-1.2.0c) | Modified: RLVa-1.0.0c From 69436a903230a2e0dd80f1dc38682b89882d25a2 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Sat, 9 Aug 2014 10:50:24 -0400 Subject: [PATCH 230/242] Add french translation for connect to neighboring regions from Nomade Zhao --- .../skins/default/xui/fr/panel_preferences_ascent_vanity.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml index b5891495b..a00161142 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml @@ -14,6 +14,7 @@ + From a6ac8e1f7123eef1fd510f21bbd821d32c41ebfb Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Sat, 9 Aug 2014 04:15:40 +0200 Subject: [PATCH 231/242] Workaround for clang bugs --- indra/llrender/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt index 38adb7dd0..b03111f7e 100644 --- a/indra/llrender/CMakeLists.txt +++ b/indra/llrender/CMakeLists.txt @@ -74,6 +74,11 @@ set(llrender_HEADER_FILES set_source_files_properties(${llrender_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) +# Workaround hack for clang bugs +if (DARWIN) + set_property(SOURCE llgl.cpp PROPERTY COMPILE_FLAGS -O1) +endif (DARWIN) + list(APPEND llrender_SOURCE_FILES ${llrender_HEADER_FILES}) add_library (llrender ${llrender_SOURCE_FILES}) From 2deba06212864f1d75ee851f22192fc703ca1261 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 11 Aug 2014 14:36:37 -0400 Subject: [PATCH 232/242] Missed a spot with the date column for group bans I'm thinking of putting a setting here instead of hardcoding the date format, actually, but for now this is good enough. --- indra/newview/llpanelgrouproles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index e66bad4eb..d9afd5b04 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -3048,7 +3048,7 @@ void LLPanelGroupBanListSubTab::populateBanList() ban_entry.columns.add().column("name").font/*.name*/("SANSSERIF_SMALL").font_style("NORMAL"); // Singu Note: We have special date columns, so our code is unique here - ban_entry.columns.add().column("ban_date").value(bd.mBanDate).format("%Y/%m%d").font/*.name*/("SANSSERIF_SMALL").font_style("NORMAL"); + ban_entry.columns.add().column("ban_date").value(bd.mBanDate).type("date").format("%Y/%m%d").font/*.name*/("SANSSERIF_SMALL").font_style("NORMAL"); mBanList->addNameItemRow(ban_entry); } From 8e2da87b9775419d2074ef339fcef9f162f646ee Mon Sep 17 00:00:00 2001 From: Damian Zhaoying Date: Mon, 11 Aug 2014 18:22:34 -0300 Subject: [PATCH 233/242] Update spanish translations to reflect a lot of changes and adds in last Alphas builds. --- .../skins/default/xui/es/floater_about.xml | 2 +- .../default/xui/es/floater_autoreplace.xml | 2 +- .../skins/default/xui/es/floater_avatar.xml | 4 + .../default/xui/es/floater_buy_currency.xml | 4 +- .../default/xui/es/floater_destinations.xml | 4 + .../default/xui/es/floater_directory.xml | 7 +- .../xui/es/floater_instant_message_ad_hoc.xml | 2 + ..._instant_message_ad_hoc_concisebuttons.xml | 3 +- ...floater_instant_message_concisebuttons.xml | 1 + .../xui/es/floater_instant_message_group.xml | 3 +- ...r_instant_message_group_concisebuttons.xml | 1 + .../skins/default/xui/es/floater_joystick.xml | 6 + .../default/xui/es/floater_media_lists.xml | 41 +++++++ .../default/xui/es/floater_object_weights.xml | 2 +- .../default/xui/es/floater_perm_prefs.xml | 26 +++-- .../skins/default/xui/es/floater_radar.xml | 2 + .../skins/default/xui/es/floater_tools.xml | 14 ++- .../skins/default/xui/es/menu_avs_list.xml | 1 + .../skins/default/xui/es/menu_login.xml | 2 +- .../skins/default/xui/es/menu_pie_object.xml | 8 +- .../skins/default/xui/es/menu_radar.xml | 2 + .../skins/default/xui/es/menu_viewer.xml | 17 +-- .../skins/default/xui/es/notifications.xml | 103 +++++++++++++++++- .../default/xui/es/panel_group_bulk_ban.xml | 25 +++++ .../default/xui/es/panel_group_general.xml | 2 +- .../default/xui/es/panel_group_invite.xml | 14 +-- .../default/xui/es/panel_group_roles.xml | 55 +++++++++- .../skins/default/xui/es/panel_login.xml | 3 +- .../xui/es/panel_preferences_ascent_chat.xml | 1 + .../es/panel_preferences_ascent_system.xml | 43 ++++++-- .../es/panel_preferences_ascent_vanity.xml | 4 +- .../xui/es/panel_preferences_audio.xml | 7 +- .../xui/es/panel_preferences_general.xml | 3 + .../xui/es/panel_preferences_graphics1.xml | 89 ++++----------- .../default/xui/es/panel_preferences_im.xml | 5 +- .../xui/es/panel_preferences_input.xml | 5 +- .../default/xui/es/panel_region_general.xml | 1 + .../skins/default/xui/es/role_actions.xml | 1 + .../newview/skins/default/xui/es/strings.xml | 35 +++++- 39 files changed, 414 insertions(+), 136 deletions(-) create mode 100644 indra/newview/skins/default/xui/es/floater_avatar.xml create mode 100644 indra/newview/skins/default/xui/es/floater_destinations.xml create mode 100644 indra/newview/skins/default/xui/es/floater_media_lists.xml create mode 100644 indra/newview/skins/default/xui/es/panel_group_bulk_ban.xml diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index fd18946c2..b6349b59c 100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -1,5 +1,5 @@ - +