diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llconversationview.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llconversationview.h | 3 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.h | 2 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llviewermessage.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/colors.xml | 3 | 
7 files changed, 21 insertions, 10 deletions
| diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index a1f627c8cc..0e0ab236d6 100644 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -86,7 +86,8 @@ LLConversationViewSession::LLConversationViewSession(const LLConversationViewSes      mHasArrow(true),      mIsInActiveVoiceChannel(false),      mFlashStateOn(false), -    mFlashStarted(false) +    mFlashStarted(false), +    mIsAltFlashColor(false)  {      mFlashTimer = new LLFlashTimer();      mAreChildrenInited = true; // inventory only @@ -157,7 +158,7 @@ void LLConversationViewSession::destroyView()      LLFolderViewFolder::destroyView();  } -void LLConversationViewSession::setFlashState(bool flash_state) +void LLConversationViewSession::setFlashState(bool flash_state, bool alternate_color)  {      if (flash_state && !mFlashStateOn)      { @@ -170,6 +171,7 @@ void LLConversationViewSession::setFlashState(bool flash_state)      mFlashStateOn = flash_state;      mFlashStarted = false; +    mIsAltFlashColor = mFlashStateOn && (alternate_color || mIsAltFlashColor);      mFlashTimer->stopFlashing();  } @@ -288,7 +290,8 @@ void LLConversationViewSession::draw()      startFlashing();      // draw highlight for selected items -    drawHighlight(show_context, true, sHighlightBgColor, sFlashBgColor, sFocusOutlineColor, sMouseOverColor); +    static LLUIColor alt_color = LLUIColorTable::instance().getColor("MentionFlashBgColor", DEFAULT_WHITE); +    drawHighlight(show_context, true, sHighlightBgColor, mIsAltFlashColor ? alt_color : sFlashBgColor, sFocusOutlineColor, sMouseOverColor);      // Draw children if root folder, or any other folder that is open. Do not draw children when animating to closed state or you get rendering overlap.      bool draw_children = getRoot() == static_cast<LLFolderViewFolder*>(this) || isOpen(); diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h index 8eb6392121..a6d240ed84 100644 --- a/indra/newview/llconversationview.h +++ b/indra/newview/llconversationview.h @@ -90,7 +90,7 @@ public:      virtual void refresh(); -    /*virtual*/ void setFlashState(bool flash_state); +    /*virtual*/ void setFlashState(bool flash_state, bool alternate_color = false);      void setHighlightState(bool hihglight_state);      LLFloater* getSessionFloater(); @@ -111,6 +111,7 @@ private:      LLFlashTimer*           mFlashTimer;      bool                    mFlashStateOn;      bool                    mFlashStarted; +    bool                    mIsAltFlashColor;      bool                    mCollapsedMode;      bool                    mHasArrow; diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index e4b14d8df6..72d4d30dcf 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -2302,14 +2302,14 @@ bool LLFloaterIMContainer::isConversationLoggingAllowed()      return gSavedPerAccountSettings.getS32("KeepConversationLogTranscripts") > 0;  } -void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes) +void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes, bool alternate_color)  {      //Finds the conversation line item to flash using the session_id      LLConversationViewSession * widget = dynamic_cast<LLConversationViewSession *>(get_ptr_in_map(mConversationsWidgets,session_id));      if (widget)      { -        widget->setFlashState(is_flashes); +        widget->setFlashState(is_flashes, alternate_color);      }  } diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index e5486e67da..30eed8be36 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -208,7 +208,7 @@ public:      void reSelectConversation();      void updateSpeakBtnState();      static bool isConversationLoggingAllowed(); -    void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes); +    void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes, bool alternate_color = false);      void highlightConversationItemWidget(const LLUUID& session_id, bool is_highlighted);      bool isScrolledOutOfSight(LLConversationViewSession* conversation_item_widget);      boost::signals2::connection mMicroChangedSignal; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 474b7b66d7..23bba99ed6 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -71,6 +71,7 @@  #include "llviewerregion.h"  #include "llcorehttputil.h"  #include "lluiusage.h" +#include "llurlregistry.h"  #include <array> @@ -197,6 +198,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)      LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id);      bool store_dnd_message = false; // flag storage of a dnd message      bool is_session_focused = session_floater->isTornOff() && session_floater->hasFocus(); +    bool contains_mention = LLUrlRegistry::getInstance()->containsAgentMention(msg["message"].asString());      if (!LLFloater::isVisible(im_box) || im_box->isMinimized())      {          conversations_floater_status = CLOSED; @@ -323,7 +325,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)      if ("openconversations" == user_preferences              || ON_TOP == conversations_floater_status              || ("toast" == user_preferences && ON_TOP != conversations_floater_status) -        || ("flash" == user_preferences && (CLOSED == conversations_floater_status +        || (("flash" == user_preferences || contains_mention) && (CLOSED == conversations_floater_status                                          || NOT_ON_TOP == conversations_floater_status))          || is_dnd_msg)      { @@ -343,7 +345,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)                  }                  else                  { -            im_box->flashConversationItemWidget(session_id, true); +            im_box->flashConversationItemWidget(session_id, true, contains_mention);          }      }          } @@ -3269,7 +3271,7 @@ void LLIMMgr::addMessage(      {          LLFloaterReg::showInstance("im_container");          LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container")-> -                flashConversationItemWidget(new_session_id, true); +                flashConversationItemWidget(new_session_id, true, LLUrlRegistry::getInstance()->containsAgentMention(msg));      }  } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index bdcfec34f6..1501ba41c2 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2583,6 +2583,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)              msg_notify["session_id"] = LLUUID();              msg_notify["from_id"] = chat.mFromID;              msg_notify["source_type"] = chat.mSourceType; +            // used to check if there is agent mention in the message +            msg_notify["message"] = mesg;              on_new_message(msg_notify);          } diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index f0ada22d66..0c34a3a5fb 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -1009,4 +1009,7 @@    <color      name="ChatSelfMentionHighlight"      value="1 1 0 1" /> +  <color +    name="MentionFlashBgColor" +    value="1 1 0 0.5" />  </colors> | 
