diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index aa457f772..382fd7955 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1308,6 +1308,28 @@ This should be as low as possible, but too low may break functionality
Value
0
+ AntiSpamNotFriends
+
+ Comment
+ When true, dialogs from friends will not be blocked unless the _NACL_Antispam is true.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ AntiSpamNotMine
+
+ Comment
+ When true, dialogs from your own objects will not be blocked unless the _NACL_Antispam is true.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AntiSpamNotify
Comment
diff --git a/indra/newview/ascentprefschat.cpp b/indra/newview/ascentprefschat.cpp
index 8e2df4678..16202e813 100644
--- a/indra/newview/ascentprefschat.cpp
+++ b/indra/newview/ascentprefschat.cpp
@@ -210,6 +210,10 @@ void LLPrefsAscentChat::onCommitDialogBlock(LLUICtrl* ctrl, const LLSD& value)
childSetEnabled("Item Offers", !enabled);
childSetEnabled("Scripts", !enabled);
childSetEnabled("Teleport Offers", !enabled);
+ childSetEnabled("Teleport Requests", !enabled);
+ childSetEnabled("Except those from:", !enabled);
+ childSetEnabled("My objects", !enabled);
+ childSetEnabled("My friends", !enabled);
}
}
@@ -329,6 +333,8 @@ void LLPrefsAscentChat::refreshValues()
mBlockGroupFeeInviteSpam = gSavedSettings.getBOOL("AntiSpamGroupFeeInvites");
mBlockGroupNoticeSpam = gSavedSettings.getBOOL("AntiSpamGroupNotices");
mBlockItemOfferSpam = gSavedSettings.getBOOL("AntiSpamItemOffers");
+ mBlockNotFriendSpam = gSavedSettings.getBOOL("AntiSpamNotFriend");
+ mBlockNotMineSpam = gSavedSettings.getBOOL("AntiSpamNotMine");
mBlockScriptSpam = gSavedSettings.getBOOL("AntiSpamScripts");
mBlockTeleportSpam = gSavedSettings.getBOOL("AntiSpamTeleports");
mBlockTeleportRequestSpam = gSavedSettings.getBOOL("AntiSpamTeleportRequests");
@@ -547,6 +553,8 @@ void LLPrefsAscentChat::cancel()
gSavedSettings.setBOOL("AntiSpamGroupInvites", mBlockGroupInviteSpam);
gSavedSettings.setBOOL("AntiSpamGroupFeeInvites", mBlockGroupFeeInviteSpam);
gSavedSettings.setBOOL("AntiSpamItemOffers", mBlockItemOfferSpam);
+ gSavedSettings.setBOOL("AntiSpamNotFriend", mBlockNotFriendSpam);
+ gSavedSettings.setBOOL("AntiSpamNotMine", mBlockNotMineSpam);
gSavedSettings.setBOOL("AntiSpamScripts", mBlockScriptSpam);
gSavedSettings.setBOOL("AntiSpamTeleports", mBlockTeleportSpam);
gSavedSettings.setBOOL("AntiSpamTeleportRequests", mBlockTeleportRequestSpam);
diff --git a/indra/newview/ascentprefschat.h b/indra/newview/ascentprefschat.h
index 476f82551..38fc2d8c8 100644
--- a/indra/newview/ascentprefschat.h
+++ b/indra/newview/ascentprefschat.h
@@ -105,6 +105,8 @@ protected:
BOOL mBlockGroupInviteSpam;
BOOL mBlockGroupFeeInviteSpam;
BOOL mBlockItemOfferSpam;
+ bool mBlockNotMineSpam;
+ bool mBlockNotFriendSpam;
BOOL mBlockScriptSpam;
BOOL mBlockTeleportSpam;
bool mBlockTeleportRequestSpam;
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index f890e55f8..883d44ecc 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -70,7 +70,11 @@ BOOL LLPanelVoiceDeviceSettings::postBuild()
volume_slider->setValue(mMicVolume);
mCtrlInputDevices = getChild("voice_input_device");
+ mCtrlInputDevices->add(getLocalizedDeviceName(mInputDevice), mInputDevice);
+ mCtrlInputDevices->setValue(mInputDevice);
mCtrlOutputDevices = getChild("voice_output_device");
+ mCtrlOutputDevices->add(getLocalizedDeviceName(mOutputDevice), mOutputDevice);
+ mCtrlOutputDevices->setValue(mOutputDevice);
mCtrlInputDevices->setCommitCallback(
boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this));
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 3e8c9145c..f9d008359 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -228,6 +228,7 @@ class AIHTTPView;
void add_wave_listeners();
void add_dae_listeners();
+void add_radar_listeners();
//extern BOOL gHideSelectedObjects;
//extern BOOL gAllowSelectAvatar;
//extern BOOL gDebugAvatarRotation;
@@ -9213,13 +9214,32 @@ LLScrollListCtrl* get_focused_list()
return list;
}
+S32 get_focused_list_num_selected()
+{
+ if (LLScrollListCtrl* list = get_focused_list())
+ return list->getNumSelected();
+ return 0;
+}
+
+const LLUUID get_focused_list_id_selected()
+{
+ if (LLScrollListCtrl* list = get_focused_list())
+ return list->getStringUUIDSelectedItem();
+ return LLUUID::null;
+}
+
+const uuid_vec_t get_focused_list_ids_selected()
+{
+ if (LLScrollListCtrl* list = get_focused_list())
+ return list->getSelectedIDs();
+ return uuid_vec_t();
+}
+
class ListEnableAnySelected : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- gMenuHolder->findControl(userdata["control"].asString())->setValue(list->getNumSelected());
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(get_focused_list_num_selected());
return true;
}
};
@@ -9228,9 +9248,7 @@ class ListEnableMultipleSelected : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- gMenuHolder->findControl(userdata["control"].asString())->setValue(list->getNumSelected() > 1);
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(get_focused_list_num_selected() > 1);
return true;
}
};
@@ -9239,9 +9257,7 @@ class ListEnableSingleSelected : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- gMenuHolder->findControl(userdata["control"].asString())->setValue(list->getNumSelected() == 1);
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(get_focused_list_num_selected() == 1);
return true;
}
};
@@ -9261,9 +9277,7 @@ class ListEnableIsFriend : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- gMenuHolder->findControl(userdata["control"].asString())->setValue(LLAvatarActions::isFriend(list->getStringUUIDSelectedItem()));
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(LLAvatarActions::isFriend(get_focused_list_id_selected()));
return true;
}
};
@@ -9272,9 +9286,7 @@ class ListEnableIsNotFriend : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- gMenuHolder->findControl(userdata["control"].asString())->setValue(!LLAvatarActions::isFriend(list->getStringUUIDSelectedItem()));
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(!LLAvatarActions::isFriend(get_focused_list_id_selected()));
return true;
}
};
@@ -9283,9 +9295,7 @@ class ListEnableMute : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- uuid_vec_t ids = list->getSelectedIDs();
+ const uuid_vec_t& ids = get_focused_list_ids_selected();
bool can_block = true;
for (uuid_vec_t::const_iterator it = ids.begin(); can_block && it != ids.end(); ++it)
can_block = LLAvatarActions::canBlock(*it);
@@ -9298,9 +9308,16 @@ class ListEnableOfferTeleport : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- gMenuHolder->findControl(userdata["control"].asString())->setValue(LLAvatarActions::canOfferTeleport(list->getSelectedIDs()));
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(LLAvatarActions::canOfferTeleport(get_focused_list_ids_selected()));
+ return true;
+ }
+};
+
+class ListVisibleWebProfile : public view_listener_t
+{
+ bool handleEvent(LLPointer event, const LLSD& userdata)
+ {
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(get_focused_list_num_selected() && !(gSavedSettings.getBOOL("UseWebProfiles") || gSavedSettings.getString("WebProfileURL").empty()));
return true;
}
};
@@ -9309,9 +9326,7 @@ class ListCopyUUIDs : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::copyUUIDs(list->getSelectedIDs());
+ LLAvatarActions::copyUUIDs(get_focused_list_ids_selected());
return true;
}
};
@@ -9320,9 +9335,7 @@ class ListInviteToGroup : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::inviteToGroup(list->getStringUUIDSelectedItem());
+ LLAvatarActions::inviteToGroup(get_focused_list_id_selected());
return true;
}
};
@@ -9331,9 +9344,7 @@ class ListOfferTeleport : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::offerTeleport(list->getSelectedIDs());
+ LLAvatarActions::offerTeleport(get_focused_list_ids_selected());
return true;
}
};
@@ -9342,9 +9353,7 @@ class ListPay : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::pay(list->getStringUUIDSelectedItem());
+ LLAvatarActions::pay(get_focused_list_id_selected());
return true;
}
};
@@ -9353,9 +9362,7 @@ class ListRemoveFriend : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::removeFriendDialog(list->getStringUUIDSelectedItem());
+ LLAvatarActions::removeFriendDialog(get_focused_list_id_selected());
return true;
}
};
@@ -9364,9 +9371,7 @@ class ListRequestFriendship : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::requestFriendshipDialog(list->getStringUUIDSelectedItem());
+ LLAvatarActions::requestFriendshipDialog(get_focused_list_id_selected());
return true;
}
};
@@ -9375,9 +9380,7 @@ class ListRequestTeleport : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::teleportRequest(list->getStringUUIDSelectedItem());
+ LLAvatarActions::teleportRequest(get_focused_list_id_selected());
return true;
}
};
@@ -9386,9 +9389,16 @@ class ListShowProfile : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::showProfiles(list->getSelectedIDs());
+ LLAvatarActions::showProfiles(get_focused_list_ids_selected());
+ return true;
+ }
+};
+
+class ListShowWebProfile : public view_listener_t
+{
+ bool handleEvent(LLPointer event, const LLSD& userdata)
+ {
+ LLAvatarActions::showProfiles(get_focused_list_ids_selected(), true);
return true;
}
};
@@ -9397,9 +9407,7 @@ class ListStartAdhocCall : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::startAdhocCall(list->getSelectedIDs());
+ LLAvatarActions::startAdhocCall(get_focused_list_ids_selected());
return true;
}
};
@@ -9408,9 +9416,7 @@ class ListStartCall : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::startCall(list->getStringUUIDSelectedItem());
+ LLAvatarActions::startCall(get_focused_list_id_selected());
return true;
}
};
@@ -9419,9 +9425,7 @@ class ListStartConference : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::startConference(list->getSelectedIDs());
+ LLAvatarActions::startConference(get_focused_list_ids_selected());
return true;
}
};
@@ -9430,23 +9434,21 @@ class ListStartIM : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLAvatarActions::startIM(list->getStringUUIDSelectedItem());
+ LLAvatarActions::startIM(get_focused_list_id_selected());
return true;
}
};
+/* Singu TODO: Figure out why this wouldn't work
class ListAbuseReport : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- LLFloaterReporter::showFromObject(list->getStringUUIDSelectedItem());
+ LLFloaterReporter::showFromObject(get_focused_list_id_selected());
return true;
}
};
+*/
// Create the args for administrative notifications used in lists, tossing the selected names into it.
LLSD create_args(const uuid_vec_t& ids, const std::string& token)
@@ -9471,9 +9473,7 @@ class ListEject : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- const uuid_vec_t& ids = list->getSelectedIDs();
+ const uuid_vec_t& ids = get_focused_list_ids_selected();
LLNotificationsUtil::add("EjectAvatarFullname", create_args(ids, "AVATAR_NAME"), LLSD(), boost::bind(parcel_mod_notice_callback, ids, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2), send_eject));
return true;
}
@@ -9484,9 +9484,7 @@ class ListFreeze : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- const uuid_vec_t& ids = list->getSelectedIDs();
+ const uuid_vec_t& ids = get_focused_list_ids_selected();
LLNotificationsUtil::add("FreezeAvatarFullname", create_args(ids, "AVATAR_NAME"), LLSD(), boost::bind(parcel_mod_notice_callback, ids, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2), send_freeze));
return true;
}
@@ -9512,9 +9510,7 @@ class ListEstateBan : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- const uuid_vec_t& ids = list->getSelectedIDs();
+ const uuid_vec_t& ids = get_focused_list_ids_selected();
LLNotificationsUtil::add("EstateBanUser", create_args(ids, "EVIL_USER"), LLSD(), boost::bind(estate_bulk_eject, ids, true, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2)));
return true;
}
@@ -9524,9 +9520,7 @@ class ListEstateEject : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- const uuid_vec_t& ids = list->getSelectedIDs();
+ const uuid_vec_t& ids = get_focused_list_ids_selected();
LLNotificationsUtil::add("EstateKickUser", create_args(ids, "EVIL_USER"), LLSD(), boost::bind(estate_bulk_eject, ids, false, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2)));
return true;
}
@@ -9536,9 +9530,7 @@ class ListToggleMute : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
{
- LLScrollListCtrl* list = get_focused_list();
- if (!list) return false;
- uuid_vec_t ids = list->getSelectedIDs();
+ const uuid_vec_t& ids = get_focused_list_ids_selected();
for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
LLAvatarActions::toggleBlock(*it);
return true;
@@ -9857,6 +9849,7 @@ void initialize_menus()
addMenu(new ListEnableIsNotFriend(), "List.EnableIsNotFriend");
addMenu(new ListEnableMute(), "List.EnableMute");
addMenu(new ListEnableOfferTeleport(), "List.EnableOfferTeleport");
+ addMenu(new ListVisibleWebProfile(), "List.VisibleWebProfile");
addMenu(new ListCopyUUIDs(), "List.CopyUUIDs");
addMenu(new ListInviteToGroup(), "List.InviteToGroup");
addMenu(new ListOfferTeleport(), "List.OfferTeleport");
@@ -9865,17 +9858,20 @@ void initialize_menus()
addMenu(new ListRequestFriendship(), "List.RequestFriendship");
addMenu(new ListRequestTeleport(), "List.RequestTeleport");
addMenu(new ListShowProfile(), "List.ShowProfile");
+ addMenu(new ListShowWebProfile(), "List.ShowWebProfile");
addMenu(new ListStartAdhocCall(), "List.StartAdhocCall");
addMenu(new ListStartCall(), "List.StartCall");
addMenu(new ListStartConference(), "List.StartConference");
addMenu(new ListStartIM(), "List.StartIM");
- addMenu(new ListAbuseReport(), "List.AbuseReport");
+ //addMenu(new ListAbuseReport(), "List.AbuseReport");
addMenu(new ListEject(), "List.ParcelEject");
addMenu(new ListFreeze(), "List.Freeze");
addMenu(new ListEstateBan(), "List.EstateBan");
addMenu(new ListEstateEject(), "List.EstateEject");
addMenu(new ListToggleMute(), "List.ToggleMute");
+ add_radar_listeners();
+
LLToolMgr::getInstance()->initMenu(sMenus);
}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index d0f57be83..305f54dc1 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1671,11 +1671,63 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
return false;
}
+bool is_spam_filtered(const EInstantMessage& dialog, bool is_friend, bool is_owned_by_me)
+{
+ // First, check the master filter
+ static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
+ if (antispam) return true;
+
+ // Second, check if this dialog type is even being filtered
+ switch(dialog)
+ {
+ case IM_GROUP_NOTICE:
+ case IM_GROUP_NOTICE_REQUESTED:
+ if (!gSavedSettings.getBOOL("AntiSpamGroupNotices")) return false;
+ break;
+ case IM_GROUP_INVITATION:
+ if (!gSavedSettings.getBOOL("AntiSpamGroupInvites")) return false;
+ break;
+ case IM_INVENTORY_OFFERED:
+ case IM_TASK_INVENTORY_OFFERED:
+ if (!gSavedSettings.getBOOL("AntiSpamItemOffers")) return false;
+ break;
+ case IM_FROM_TASK_AS_ALERT:
+ if (!gSavedSettings.getBOOL("AntiSpamAlerts")) return false;
+ break;
+ case IM_LURE_USER:
+ if (!gSavedSettings.getBOOL("AntiSpamTeleports")) return false;
+ break;
+ case IM_TELEPORT_REQUEST:
+ if (!gSavedSettings.getBOOL("AntiSpamTeleportRequests")) return false;
+ break;
+ case IM_FRIENDSHIP_OFFERED:
+ if (!gSavedSettings.getBOOL("AntiSpamFriendshipOffers")) return false;
+ break;
+ case IM_COUNT:
+ // Bit of a hack, we should never get here unless we did this on purpose, though, doesn't matter because we'd do nothing anyway
+ if (!gSavedSettings.getBOOL("AntiSpamScripts")) return false;
+ break;
+ default:
+ return false;
+ }
+
+ // Third, possibly filtered, check the filter bypasses
+ static LLCachedControl antispam_not_mine(gSavedSettings,"AntiSpamNotMine");
+ if (antispam_not_mine && is_owned_by_me)
+ return false;
+
+ static LLCachedControl antispam_not_friends(gSavedSettings,"AntiSpamNotFriends");
+ if (antispam_not_friends && is_friend)
+ return false;
+
+ // Last, definitely filter
+ return true;
+}
+
void inventory_offer_handler(LLOfferInfo* info)
{
// NaCl - Antispam Registry
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
- if(antispam || gSavedSettings.getBOOL("AntiSpamItemOffers") || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_INVENTORY,info->mFromID))
+ if (NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_INVENTORY,info->mFromID))
return;
// NaCl End
//If muted, don't even go through the messaging stuff. Just curtail the offer here.
@@ -2071,7 +2123,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
{
return;
}
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
LLUUID from_id;
BOOL from_group;
LLUUID to_id;
@@ -2175,11 +2226,15 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
LLViewerObject *source = gObjectList.findObject(session_id); //Session ID is probably the wrong thing.
- if (source)
+ if (source || (source = gObjectList.findObject(from_id)))
{
is_owned_by_me = source->permYouOwner();
}
+ // NaCl - Antispam
+ if (is_spam_filtered(dialog, is_friend, is_owned_by_me)) return;
+ // NaCl End
+
std::string separator_string(": ");
int message_offset = 0;
@@ -2545,10 +2600,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_GROUP_NOTICE:
case IM_GROUP_NOTICE_REQUESTED:
{
- // NaCl - Antispam
- if(antispam || gSavedSettings.getBOOL("AntiSpamGroupNotices"))
- return;
- // NaCl End
LL_INFOS("Messaging") << "Received IM_GROUP_NOTICE message." << LL_ENDL;
// Read the binary bucket for more information.
struct notice_bucket_header_t
@@ -2664,11 +2715,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
break;
case IM_GROUP_INVITATION:
{
- // NaCl - Antispam
- if (antispam || gSavedSettings.getBOOL("AntiSpamGroupInvites"))
- return;
- // NaCl End
-
//if (!is_linden && (is_busy || is_muted))
if ((is_busy || is_muted))
{
@@ -2718,10 +2764,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_TASK_INVENTORY_OFFERED:
// Someone has offered us some inventory.
{
- // NaCl - Antispam
- if(antispam || gSavedSettings.getBOOL("AntiSpamItemOffers"))
- return;
- // NaCl End
LLOfferInfo* info = new LLOfferInfo;
if (IM_INVENTORY_OFFERED == dialog)
{
@@ -2990,10 +3032,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
break;
case IM_FROM_TASK_AS_ALERT:
- // NaCl - Antispam
- if(antispam || (!is_owned_by_me && gSavedSettings.getBOOL("AntiSpamAlerts")))
- return;
- // NaCl End
if (is_busy && !is_owned_by_me)
{
return;
@@ -3022,7 +3060,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_LURE_USER:
case IM_TELEPORT_REQUEST:
{
- if (antispam || gSavedSettings.getBOOL(dialog == IM_LURE_USER ? "AntiSpamTeleports" : "AntiSpamTeleportRequests")) return; //NaCl Antispam
// [RLVa:KB] - Checked: 2010-12-11 (RLVa-1.2.2c) | Added: RLVa-1.2.2c
// If the lure sender is a specific @accepttp exception they will override muted and busy status
bool fRlvSummon = (rlv_handler_t::isEnabled()) && (gRlvHandler.isException(RLV_BHVR_ACCEPTTP, from_id));
@@ -3268,10 +3305,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_FRIENDSHIP_OFFERED:
{
- // NaCl - Antispam
- if(antispam || gSavedSettings.getBOOL("AntiSpamFriendshipOffers"))
- return;
- // NaCl End
LLSD payload;
payload["from_id"] = from_id;
payload["session_id"] = session_id;;
@@ -3424,8 +3457,7 @@ static LLNotificationFunctorRegistration callingcard_offer_cb_reg("OfferCallingC
void process_offer_callingcard(LLMessageSystem* msg, void**)
{
// NaCl - Antispam
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
- if(antispam || gSavedSettings.getBOOL("AntiSpamFriendshipOffers"))
+ if (is_spam_filtered(IM_FRIENDSHIP_OFFERED, false, false))
return;
// NaCl End
// someone has offered to form a friendship
@@ -6980,11 +7012,6 @@ static LLNotificationFunctorRegistration script_question_cb_reg_2("ScriptQuestio
void process_script_question(LLMessageSystem *msg, void **user_data)
{
- // NaCl - Antispam
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
- if(antispam || gSavedSettings.getBOOL("AntiSpamScripts"))
- return;
- // NaCl End
// *TODO: Translate owner name -> [FIRST] [LAST]
LLHost sender = msg->getSender();
@@ -7018,6 +7045,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
std::string throttle_name = owner_name;
std::string self_name;
LLAgentUI::buildFullname( self_name );
+ // NaCl - Antispam
+ if (is_spam_filtered(IM_COUNT, false, owner_name == self_name)) return;
+ // NaCl End
if( owner_name == self_name )
{
throttle_name = taskid.getString();
@@ -7758,11 +7788,6 @@ static LLNotificationFunctorRegistration callback_script_dialog_reg_2("ScriptDia
void process_script_dialog(LLMessageSystem* msg, void**)
{
- // NaCl - Antispam
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
- if(antispam || gSavedSettings.getBOOL("AntiSpamScripts"))
- return;
- // NaCl End
S32 i;
LLSD payload;
@@ -7786,6 +7811,10 @@ void process_script_dialog(LLMessageSystem* msg, void**)
// NaCl End
}
+ // NaCl - Antispam
+ if (owner_id.isNull() ? is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(object_id), object_id == gAgentID) : is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(owner_id), owner_id == gAgentID)) return;
+ // NaCl End
+
if (LLMuteList::getInstance()->isMuted(object_id) || LLMuteList::getInstance()->isMuted(owner_id))
{
return;
@@ -7934,11 +7963,6 @@ void callback_load_url_name(const LLUUID& id, const std::string& full_name, bool
void process_load_url(LLMessageSystem* msg, void**)
{
- // NaCl - Antispam
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
- if(antispam || gSavedSettings.getBOOL("AntiSpamScripts"))
- return;
- // NaCl End
LLUUID object_id;
LLUUID owner_id;
BOOL owner_is_group;
@@ -7950,6 +7974,10 @@ void process_load_url(LLMessageSystem* msg, void**)
msg->getUUID( "Data", "ObjectID", object_id);
msg->getUUID( "Data", "OwnerID", owner_id);
+ // NaCl - Antispam
+ if (owner_id.isNull() ? is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(object_id), object_id == gAgentID) : is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(owner_id), owner_id == gAgentID)) return;
+ // NaCl End
+
// NaCl - Antispam Registry
if((owner_id.isNull()
&& NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,object_id))
@@ -8029,12 +8057,16 @@ void process_initiate_download(LLMessageSystem* msg, void**)
void process_script_teleport_request(LLMessageSystem* msg, void**)
{
- // NaCl - Antispam
- static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam");
- if(antispam || gSavedSettings.getBOOL("AntiSpamScripts"))
- return;
- // NaCl End
if (!gSavedSettings.getBOOL("ScriptsCanShowUI")) return;
+ // NaCl - Antispam
+ {
+ LLUUID object_id, owner_id;
+ msg->getUUID( "Data", "ObjectID", object_id);
+ msg->getUUID( "Data", "OwnerID", owner_id);
+
+ if (owner_id.isNull() ? is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(object_id), object_id == gAgentID) : is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(owner_id), owner_id == gAgentID)) return;
+ }
+ // NaCl End
std::string object_name;
std::string sim_name;
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 1e4c68b79..9b6548515 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -279,7 +279,7 @@ void LLVoiceChannel::deactivate()
LLVoiceClient::getInstance()->getUserPTTState())
{
gSavedSettings.setBOOL("PTTCurrentlyEnabled", true);
- LLVoiceClient::getInstance()->inputUserControlState(true);
+ LLVoiceClient::getInstance()->setUserPTTState(false); // Singu Note: Calling inputUserControlState(true) here sometimes(always?) toggled mic back on, likely due to the above setBOOL
}
}
LLVoiceClient::getInstance()->removeObserver(this);
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 1cb554c53..402c5ca7b 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
@@ -4,6 +4,10 @@
+
+
+
+
@@ -54,10 +58,10 @@
-
+
diff --git a/indra/newview/skins/default/xui/en-us/menu_inventory.xml b/indra/newview/skins/default/xui/en-us/menu_inventory.xml
index 7305a549f..0a04c547c 100644
--- a/indra/newview/skins/default/xui/en-us/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en-us/menu_inventory.xml
@@ -275,9 +275,9 @@
mouse_opaque="true" name="Offer Teleport..." width="128">
-
+
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 5f6155d2b..2ab9dd73b 100644
--- a/indra/newview/skins/default/xui/en-us/menu_radar.xml
+++ b/indra/newview/skins/default/xui/en-us/menu_radar.xml
@@ -5,6 +5,10 @@
+
+
+
+
@@ -129,10 +133,10 @@
-
+
diff --git a/indra/newview/skins/default/xui/en-us/panel_group_roles.xml b/indra/newview/skins/default/xui/en-us/panel_group_roles.xml
index 21fd30bec..098122431 100644
--- a/indra/newview/skins/default/xui/en-us/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en-us/panel_group_roles.xml
@@ -72,7 +72,7 @@ execute the Ability.
label="Search" left_delta="105" name="search_button" width="60" />
@@ -221,8 +221,8 @@ things in this group. There's a broad variety of Abilities.
Allowed Abilities
+ height="105" left="0" multi_select="true" name="role_assigned_members"
+ width="145" menu_file="menu_avs_list.xml"/>
+ bg_opaque_color="grey" bottom_delta="0" draw_border="true"
+ height="125" left="150" multi_select="true" name="action_members"
+ width="254" menu_file="menu_avs_list.xml"/>
diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml
index c983be6c8..00be0ba68 100644
--- a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml
+++ b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml
@@ -111,7 +111,10 @@ The following wildcards are available to enhance your autoresponses: #n for user
-
+
+ Except those from:
+
+
diff --git a/indra/newview/skins/default/xui/es/floater_instant_message.xml b/indra/newview/skins/default/xui/es/floater_instant_message.xml
index 3b343be29..a625a4086 100644
--- a/indra/newview/skins/default/xui/es/floater_instant_message.xml
+++ b/indra/newview/skins/default/xui/es/floater_instant_message.xml
@@ -33,9 +33,13 @@
Ofrecido un Item de Inventario
-
-
-
+
+
+
+
+
+
+
Modo RP
diff --git a/indra/newview/skins/default/xui/es/floater_instant_message_concisebuttons.xml b/indra/newview/skins/default/xui/es/floater_instant_message_concisebuttons.xml
index 8007323b7..e7ad706b2 100644
--- a/indra/newview/skins/default/xui/es/floater_instant_message_concisebuttons.xml
+++ b/indra/newview/skins/default/xui/es/floater_instant_message_concisebuttons.xml
@@ -30,10 +30,14 @@
Ofrecido un Ítem de Inventario
-
-
-
-
+
+
+
+
+
+
+
+
Modo RP
diff --git a/indra/newview/skins/default/xui/es/menu_avs_list.xml b/indra/newview/skins/default/xui/es/menu_avs_list.xml
new file mode 100644
index 000000000..c207fec05
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avs_list.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml
index 02cb4888f..8688cf47a 100644
--- a/indra/newview/skins/default/xui/es/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/es/menu_inventory.xml
@@ -70,6 +70,7 @@
+
diff --git a/indra/newview/skins/default/xui/es/menu_radar.xml b/indra/newview/skins/default/xui/es/menu_radar.xml
index 3148bf720..de48d5dae 100644
--- a/indra/newview/skins/default/xui/es/menu_radar.xml
+++ b/indra/newview/skins/default/xui/es/menu_radar.xml
@@ -9,8 +9,10 @@
+
+
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 97368ed39..03459c26b 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -2069,6 +2069,18 @@ Por favor, intenta con un nombre diferente.
+
+ Solicitar Teleporte a [NAME] con el mensaje siguiente
+ confirm
+
+
+
Has intentado enviar [OFFERS] ofertas de teleporte
lo cual excede el límite de [LIMIT].
@@ -3817,6 +3829,19 @@ Por favor, reinténtalo en unos momentos.
+
+ [NAME] está solicitando ser teleportado a tu ubicación.
+[MESSAGE]
+
+¿Ofrecerle Teleporte?
+ confirm
+
+
+
[MESSAGE]
[URL]
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_ascent_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_ascent_chat.xml
index 2d4e98161..e920a7c25 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_ascent_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_ascent_chat.xml
@@ -125,6 +125,7 @@ Puedes usar los siguientes comodines para personalizar tus respuestas: #n para n
+