MAINT-6518 allow negative numbered chat channels
parent
9e985120fe
commit
9ce396442f
|
|
@ -311,7 +311,8 @@ LLWString LLChatBar::stripChannelNumber(const LLWString &mesg, S32* channel)
|
|||
}
|
||||
else if (mesg[0] == '/'
|
||||
&& mesg[1]
|
||||
&& LLStringOps::isDigit(mesg[1]))
|
||||
&& (LLStringOps::isDigit(mesg[1])
|
||||
|| (mesg[1] == '-' && mesg[2] && LLStringOps::isDigit(mesg[2]))))
|
||||
{
|
||||
// This a special "/20" speak on a channel
|
||||
S32 pos = 0;
|
||||
|
|
@ -325,7 +326,7 @@ LLWString LLChatBar::stripChannelNumber(const LLWString &mesg, S32* channel)
|
|||
channel_string.push_back(c);
|
||||
pos++;
|
||||
}
|
||||
while(c && pos < 64 && LLStringOps::isDigit(c));
|
||||
while(c && pos < 64 && (LLStringOps::isDigit(c) || (pos == 1 && c == '-')));
|
||||
|
||||
// Move the pointer forward to the first non-whitespace char
|
||||
// Check isspace before looping, so we can handle "/33foo"
|
||||
|
|
|
|||
|
|
@ -798,7 +798,8 @@ LLWString LLFloaterIMNearbyChat::stripChannelNumber(const LLWString &mesg, S32*
|
|||
}
|
||||
else if (mesg[0] == '/'
|
||||
&& mesg[1]
|
||||
&& LLStringOps::isDigit(mesg[1]))
|
||||
&& (LLStringOps::isDigit(mesg[1])
|
||||
|| (mesg[1] == '-' && mesg[2] && LLStringOps::isDigit(mesg[2]))))
|
||||
{
|
||||
// This a special "/20" speak on a channel
|
||||
S32 pos = 0;
|
||||
|
|
@ -812,7 +813,7 @@ LLWString LLFloaterIMNearbyChat::stripChannelNumber(const LLWString &mesg, S32*
|
|||
channel_string.push_back(c);
|
||||
pos++;
|
||||
}
|
||||
while(c && pos < 64 && LLStringOps::isDigit(c));
|
||||
while(c && pos < 64 && (LLStringOps::isDigit(c) || (pos==1 && c =='-')));
|
||||
|
||||
// Move the pointer forward to the first non-whitespace char
|
||||
// Check isspace before looping, so we can handle "/33foo"
|
||||
|
|
@ -837,19 +838,36 @@ LLWString LLFloaterIMNearbyChat::stripChannelNumber(const LLWString &mesg, S32*
|
|||
|
||||
void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel)
|
||||
{
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_ChatFromViewer);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_ChatData);
|
||||
msg->addStringFast(_PREHASH_Message, utf8_out_text);
|
||||
msg->addU8Fast(_PREHASH_Type, type);
|
||||
msg->addS32("Channel", channel);
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
|
||||
gAgent.sendReliableMessage();
|
||||
if (channel >= 0)
|
||||
{
|
||||
msg->newMessageFast(_PREHASH_ChatFromViewer);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_ChatData);
|
||||
msg->addStringFast(_PREHASH_Message, utf8_out_text);
|
||||
msg->addU8Fast(_PREHASH_Type, type);
|
||||
msg->addS32("Channel", channel);
|
||||
|
||||
add(LLStatViewer::CHAT_COUNT, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Hack: ChatFromViewer doesn't allow negative channels
|
||||
msg->newMessage("ScriptDialogReply");
|
||||
msg->nextBlock("AgentData");
|
||||
msg->addUUID("AgentID", gAgentID);
|
||||
msg->addUUID("SessionID", gAgentSessionID);
|
||||
msg->nextBlock("Data");
|
||||
msg->addUUID("ObjectID", gAgentID);
|
||||
msg->addS32("ChatChannel", channel);
|
||||
msg->addS32("ButtonIndex", 0);
|
||||
msg->addString("ButtonLabel", utf8_out_text);
|
||||
}
|
||||
|
||||
gAgent.sendReliableMessage();
|
||||
add(LLStatViewer::CHAT_COUNT, 1);
|
||||
}
|
||||
|
||||
class LLChatCommandHandler : public LLCommandHandler
|
||||
|
|
|
|||
Loading…
Reference in New Issue