diff options
author | Paul ProductEngine <pguslisty@productengine.com> | 2012-04-13 17:14:56 +0300 |
---|---|---|
committer | Paul ProductEngine <pguslisty@productengine.com> | 2012-04-13 17:14:56 +0300 |
commit | f78039fd9509642296f2ff9c298c9828b6613975 (patch) | |
tree | 4154b18249abc0f302514556ca51b427cae047db /indra | |
parent | 3d80ad7ad32f26a1c94d0800b5adddc890b47000 (diff) |
MAINT-926 FIXED ([PUBLIC]IMs from objects appear only as notifications, not in local chat history, in some circumstances, making the sending prim untraceable (and impossible to mute))
- Improved detection of CHAT_SOURCE_SYSTEM type messages
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llchathistory.cpp | 2 | ||||
-rwxr-xr-x | indra/newview/llviewermessage.cpp | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index f530d10ddc..dd120a0dfa 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -495,7 +495,7 @@ protected: void showInfoCtrl() { - if (mAvatarID.isNull() || mFrom.empty() || SYSTEM_FROM == mFrom) return; + if (mAvatarID.isNull() || mFrom.empty() || CHAT_SOURCE_SYSTEM == mSourceType) return; if (!sInfoCtrl) { diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 9875a61ffa..65ffd3d494 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2748,7 +2748,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) chat.mSourceType = CHAT_SOURCE_OBJECT; - if(SYSTEM_FROM == name) + // To conclude that the source type of message is CHAT_SOURCE_SYSTEM it's not + // enough to check only from name (i.e. fromName = "Second Life"). For example + // source type of messages from objects called "Second Life" should not be CHAT_SOURCE_SYSTEM. + bool chat_from_system = (SYSTEM_FROM == name) && region_id.isNull() && position.isNull(); + if(chat_from_system) { // System's UUID is NULL (fixes EXT-4766) chat.mFromID = LLUUID::null; @@ -2773,7 +2777,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Note: lie to Nearby Chat, pretending that this is NOT an IM, because // IMs from obejcts don't open IM sessions. LLNearbyChat* nearby_chat = LLNearbyChat::getInstance(); - if(SYSTEM_FROM != name && nearby_chat) + if(!chat_from_system && nearby_chat) { chat.mOwnerID = from_id; LLSD args; @@ -2792,7 +2796,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) //Object IMs send with from name: 'Second Life' need to be displayed also in notification toasts (EXT-1590) - if (SYSTEM_FROM != name) break; + if (!chat_from_system) break; LLSD substitutions; substitutions["NAME"] = name; |