summaryrefslogtreecommitdiff
path: root/indra/newview/llchatitemscontainerctrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llchatitemscontainerctrl.cpp')
-rwxr-xr-x[-rw-r--r--]indra/newview/llchatitemscontainerctrl.cpp92
1 files changed, 43 insertions, 49 deletions
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index 899e0431e7..cfc62c07b6 100644..100755
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -29,12 +29,12 @@
#include "llchatitemscontainerctrl.h"
#include "lltextbox.h"
-#include "llchatmsgbox.h"
#include "llavatariconctrl.h"
#include "llcommandhandler.h"
#include "llfloaterreg.h"
#include "lllocalcliprect.h"
#include "lltrans.h"
+#include "llfloaterimnearbychat.h"
#include "llviewercontrol.h"
#include "llagentdata.h"
@@ -80,23 +80,30 @@ public:
LLObjectHandler gObjectHandler;
//*******************************************************************************************************************
-//LLNearbyChatToastPanel
+//LLFloaterIMNearbyChatToastPanel
//*******************************************************************************************************************
-LLNearbyChatToastPanel* LLNearbyChatToastPanel::createInstance()
+LLFloaterIMNearbyChatToastPanel* LLFloaterIMNearbyChatToastPanel::createInstance()
{
- LLNearbyChatToastPanel* item = new LLNearbyChatToastPanel();
+ LLFloaterIMNearbyChatToastPanel* item = new LLFloaterIMNearbyChatToastPanel();
item->buildFromFile("panel_chat_item.xml");
item->setFollows(FOLLOWS_NONE);
return item;
}
-void LLNearbyChatToastPanel::reshape (S32 width, S32 height, BOOL called_from_parent )
+void LLFloaterIMNearbyChatToastPanel::reshape (S32 width, S32 height, BOOL called_from_parent )
{
LLPanel::reshape(width, height,called_from_parent);
- LLUICtrl* msg_text = getChild<LLUICtrl>("msg_text", false);
- LLUICtrl* icon = getChild<LLUICtrl>("avatar_icon", false);
+ // reshape() may be called from LLView::initFromParams() before the children are created.
+ // We call findChild() instead of getChild() here to avoid creating dummy controls.
+ LLUICtrl* msg_text = findChild<LLUICtrl>("msg_text", false);
+ LLUICtrl* icon = findChild<LLUICtrl>("avatar_icon", false);
+
+ if (!msg_text || !icon)
+ {
+ return;
+ }
LLRect msg_text_rect = msg_text->getRect();
LLRect avatar_rect = icon->getRect();
@@ -113,16 +120,15 @@ void LLNearbyChatToastPanel::reshape (S32 width, S32 height, BOOL called_from_p
msg_text->setRect(msg_text_rect);
}
-BOOL LLNearbyChatToastPanel::postBuild()
+BOOL LLFloaterIMNearbyChatToastPanel::postBuild()
{
return LLPanel::postBuild();
}
-void LLNearbyChatToastPanel::addMessage(LLSD& notification)
+void LLFloaterIMNearbyChatToastPanel::addMessage(LLSD& notification)
{
std::string messageText = notification["message"].asString(); // UTF-8 line of text
- LLChatMsgBox* msg_text = getChild<LLChatMsgBox>("msg_text", false);
std::string color_name = notification["text_color"].asString();
@@ -163,14 +169,14 @@ void LLNearbyChatToastPanel::addMessage(LLSD& notification)
{
style_params.font.style = "ITALIC";
}
- msg_text->appendText(messageText, TRUE, style_params);
+ mMsgText->appendText(messageText, TRUE, style_params);
}
snapToMessageHeight();
}
-void LLNearbyChatToastPanel::init(LLSD& notification)
+void LLFloaterIMNearbyChatToastPanel::init(LLSD& notification)
{
std::string messageText = notification["message"].asString(); // UTF-8 line of text
std::string fromName = notification["from"].asString(); // agent or object name
@@ -196,9 +202,10 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
case 2: messageFont = LLFontGL::getFontSansSerifBig(); break;
}
- LLChatMsgBox* msg_text = getChild<LLChatMsgBox>("msg_text", false);
+ mMsgText = getChild<LLChatMsgBox>("msg_text", false);
+ mMsgText->setContentTrusted(false);
- msg_text->setText(std::string(""));
+ mMsgText->setText(std::string(""));
if ( notification["chat_style"].asInteger() != CHAT_STYLE_IRC )
{
@@ -213,17 +220,6 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
{
LLStyle::Params style_params_name;
- std::string href;
-
- if (mSourceType == CHAT_SOURCE_AGENT)
- {
- href = LLSLURL("agent", mFromID, "about").getSLURLString();
- }
- else
- {
- href = LLSLURL("object", mFromID, "inspect").getSLURLString();
- }
-
LLColor4 user_name_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params_name.color(user_name_color);
@@ -232,15 +228,15 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
style_params_name.font.name(font_name);
style_params_name.font.size(font_style_size);
- style_params_name.link_href = href;
+ style_params_name.link_href = notification["sender_slurl"].asString();
style_params_name.is_link = true;
- msg_text->appendText(str_sender, FALSE, style_params_name);
+ mMsgText->appendText(str_sender, FALSE, style_params_name);
}
else
{
- msg_text->appendText(str_sender, false);
+ mMsgText->appendText(str_sender, false);
}
}
@@ -267,7 +263,7 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
{
style_params.font.style = "ITALIC";
}
- msg_text->appendText(messageText, FALSE, style_params);
+ mMsgText->appendText(messageText, FALSE, style_params);
}
@@ -276,10 +272,9 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
mIsDirty = true;//will set Avatar Icon in draw
}
-void LLNearbyChatToastPanel::snapToMessageHeight ()
+void LLFloaterIMNearbyChatToastPanel::snapToMessageHeight ()
{
- LLChatMsgBox* text_box = getChild<LLChatMsgBox>("msg_text", false);
- S32 new_height = llmax (text_box->getTextPixelHeight() + 2*text_box->getVPad() + 2*msg_height_pad, 25);
+ S32 new_height = llmax (mMsgText->getTextPixelHeight() + 2*mMsgText->getVPad() + 2*msg_height_pad, 25);
LLRect panel_rect = getRect();
@@ -291,22 +286,22 @@ void LLNearbyChatToastPanel::snapToMessageHeight ()
}
-void LLNearbyChatToastPanel::onMouseLeave (S32 x, S32 y, MASK mask)
+void LLFloaterIMNearbyChatToastPanel::onMouseLeave (S32 x, S32 y, MASK mask)
{
}
-void LLNearbyChatToastPanel::onMouseEnter (S32 x, S32 y, MASK mask)
+void LLFloaterIMNearbyChatToastPanel::onMouseEnter (S32 x, S32 y, MASK mask)
{
if(mSourceType != CHAT_SOURCE_AGENT)
return;
}
-BOOL LLNearbyChatToastPanel::handleMouseDown (S32 x, S32 y, MASK mask)
+BOOL LLFloaterIMNearbyChatToastPanel::handleMouseDown (S32 x, S32 y, MASK mask)
{
return LLPanel::handleMouseDown(x,y,mask);
}
-BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
+BOOL LLFloaterIMNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
{
/*
fix for request EXT-4780
@@ -315,27 +310,25 @@ BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
return LLPanel::handleMouseUp(x,y,mask);
*/
- LLChatMsgBox* text_box = getChild<LLChatMsgBox>("msg_text", false);
- S32 local_x = x - text_box->getRect().mLeft;
- S32 local_y = y - text_box->getRect().mBottom;
+ S32 local_x = x - mMsgText->getRect().mLeft;
+ S32 local_y = y - mMsgText->getRect().mBottom;
//if text_box process mouse up (ussually this is click on url) - we didn't show nearby_chat.
- if (text_box->pointInView(local_x, local_y) )
+ if (mMsgText->pointInView(local_x, local_y) )
{
- if (text_box->handleMouseUp(local_x,local_y,mask) == TRUE)
+ if (mMsgText->handleMouseUp(local_x,local_y,mask) == TRUE)
return TRUE;
else
{
- LLFloaterReg::showInstance("nearby_chat",LLSD());
+ LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat")->showHistory();
return FALSE;
}
}
-
- LLFloaterReg::showInstance("nearby_chat",LLSD());
+ LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat")->showHistory();
return LLPanel::handleMouseUp(x,y,mask);
}
-void LLNearbyChatToastPanel::setHeaderVisibility(EShowItemHeader e)
+void LLFloaterIMNearbyChatToastPanel::setHeaderVisibility(EShowItemHeader e)
{
LLUICtrl* icon = getChild<LLUICtrl>("avatar_icon", false);
if(icon)
@@ -343,7 +336,7 @@ void LLNearbyChatToastPanel::setHeaderVisibility(EShowItemHeader e)
}
-bool LLNearbyChatToastPanel::canAddText ()
+bool LLFloaterIMNearbyChatToastPanel::canAddText ()
{
LLChatMsgBox* msg_text = findChild<LLChatMsgBox>("msg_text");
if(!msg_text)
@@ -351,7 +344,7 @@ bool LLNearbyChatToastPanel::canAddText ()
return msg_text->getLineCount()<10;
}
-BOOL LLNearbyChatToastPanel::handleRightMouseDown(S32 x, S32 y, MASK mask)
+BOOL LLFloaterIMNearbyChatToastPanel::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
LLUICtrl* avatar_icon = getChild<LLUICtrl>("avatar_icon", false);
@@ -363,8 +356,10 @@ BOOL LLNearbyChatToastPanel::handleRightMouseDown(S32 x, S32 y, MASK mask)
return TRUE;
return LLPanel::handleRightMouseDown(x,y,mask);
}
-void LLNearbyChatToastPanel::draw()
+void LLFloaterIMNearbyChatToastPanel::draw()
{
+ LLPanel::draw();
+
if(mIsDirty)
{
LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon", false);
@@ -382,7 +377,6 @@ void LLNearbyChatToastPanel::draw()
}
mIsDirty = false;
}
- LLToastPanelBase::draw();
}