summaryrefslogtreecommitdiff
path: root/indra/newview/llimpanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llimpanel.cpp')
-rw-r--r--indra/newview/llimpanel.cpp87
1 files changed, 46 insertions, 41 deletions
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index 328cb85c1f..ca5dd7be36 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -1238,6 +1238,7 @@ BOOL LLFloaterIMPanel::postBuild()
mInputEditor->setCallbackUserData(this);
mInputEditor->setCommitOnFocusLost( FALSE );
mInputEditor->setRevertOnEsc( FALSE );
+ mInputEditor->setReplaceNewlinesWithSpaces( FALSE );
childSetAction("profile_callee_btn", onClickProfile, this);
childSetAction("group_info_btn", onClickGroupInfo, this);
@@ -1925,8 +1926,6 @@ void deliver_message(const std::string& utf8_text,
void LLFloaterIMPanel::sendMsg()
{
- LLWString text = mInputEditor->getWText();
- LLWStringUtil::trim(text);
if (!gAgent.isGodlike()
&& (mDialog == IM_NOTHING_SPECIAL)
&& mOtherParticipantUUID.isNull())
@@ -1934,57 +1933,63 @@ void LLFloaterIMPanel::sendMsg()
llinfos << "Cannot send IM to everyone unless you're a god." << llendl;
return;
}
- if(text.length() > 0)
- {
- // Truncate and convert to UTF8 for transport
- std::string utf8_text = wstring_to_utf8str(text);
- utf8_text = utf8str_truncate(utf8_text, MAX_MSG_BUF_SIZE - 1);
- if ( mSessionInitialized )
+ if (mInputEditor)
+ {
+ LLWString text = mInputEditor->getConvertedText();
+ if(!text.empty())
{
- deliver_message(utf8_text,
- mSessionUUID,
- mOtherParticipantUUID,
- mDialog);
-
- // local echo
- if((mDialog == IM_NOTHING_SPECIAL) &&
- (mOtherParticipantUUID.notNull()))
+ // Truncate and convert to UTF8 for transport
+ std::string utf8_text = wstring_to_utf8str(text);
+ utf8_text = utf8str_truncate(utf8_text, MAX_MSG_BUF_SIZE - 1);
+
+ if ( mSessionInitialized )
{
- std::string history_echo;
- gAgent.buildFullname(history_echo);
-
- // Look for IRC-style emotes here.
- std::string prefix = utf8_text.substr(0, 4);
- if (prefix == "/me " || prefix == "/me'")
+ deliver_message(utf8_text,
+ mSessionUUID,
+ mOtherParticipantUUID,
+ mDialog);
+
+ // local echo
+ if((mDialog == IM_NOTHING_SPECIAL) &&
+ (mOtherParticipantUUID.notNull()))
{
- utf8_text.replace(0,3,"");
- }
- else
- {
- history_echo += ": ";
- }
- history_echo += utf8_text;
+ std::string history_echo;
+ gAgent.buildFullname(history_echo);
- BOOL other_was_typing = mOtherTyping;
+ // Look for IRC-style emotes here.
+ std::string prefix = utf8_text.substr(0, 4);
+ if (prefix == "/me " || prefix == "/me'")
+ {
+ utf8_text.replace(0,3,"");
+ }
+ else
+ {
+ history_echo += ": ";
+ }
+ history_echo += utf8_text;
- addHistoryLine(history_echo, gSavedSettings.getColor("IMChatColor"), true, gAgent.getID());
+ BOOL other_was_typing = mOtherTyping;
- if (other_was_typing)
- {
- addTypingIndicator(mOtherTypingName);
- }
+ addHistoryLine(history_echo, gSavedSettings.getColor("IMChatColor"), true, gAgent.getID());
+ if (other_was_typing)
+ {
+ addTypingIndicator(mOtherTypingName);
+ }
+
+ }
+ }
+ else
+ {
+ //queue up the message to send once the session is
+ //initialized
+ mQueuedMsgsForInit.append(utf8_text);
}
- }
- else
- {
- //queue up the message to send once the session is
- //initialized
- mQueuedMsgsForInit.append(utf8_text);
}
LLViewerStats::getInstance()->incStat(LLViewerStats::ST_IM_COUNT);
+
}
mInputEditor->setText(LLStringUtil::null);