summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilbert Gonzales <gilbert@lindenlab.com>2012-10-19 17:47:28 -0700
committerGilbert Gonzales <gilbert@lindenlab.com>2012-10-19 17:47:28 -0700
commitb0c54dfd3e2ecc8d4f875276397a55cef40a3d9a (patch)
tree76cdb7d4984aca3ba068e9046b12c2b9141cdfe6
parent18e5fa5bbd2f78b4fa6eee8b72666fa9aeb2100e (diff)
CHUI-433: Problem: Toasts were not being displayed due to incorrect tracking of the current conversation with focus. Resolution: Now when a conversation gains focus it will set a flag to ignore toasts. And when a conversation loses focus it will set a flag to re-enable toasts.
-rw-r--r--indra/newview/llimconversation.cpp13
-rw-r--r--indra/newview/llimview.cpp5
2 files changed, 6 insertions, 12 deletions
diff --git a/indra/newview/llimconversation.cpp b/indra/newview/llimconversation.cpp
index bd2a2419a8..f4b8d39cd0 100644
--- a/indra/newview/llimconversation.cpp
+++ b/indra/newview/llimconversation.cpp
@@ -202,16 +202,10 @@ void LLIMConversation::onFocusReceived()
{
setBackgroundOpaque(true);
- if (mSessionID.notNull())
+ if (mSessionID.notNull() && isInVisibleChain())
{
- LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
-
- if (getVisible())
- {
- // suppress corresponding toast only if this floater is visible and have focus
- LLIMModel::getInstance()->setActiveSessionID(mSessionID);
- LLIMModel::instance().sendNoUnreadMessages(mSessionID);
- }
+ LLIMModel::getInstance()->setActiveSessionID(mSessionID);
+ LLIMModel::instance().sendNoUnreadMessages(mSessionID);
}
LLTransientDockableFloater::onFocusReceived();
@@ -219,6 +213,7 @@ void LLIMConversation::onFocusReceived()
void LLIMConversation::onFocusLost()
{
+ LLIMModel::getInstance()->resetActiveSessionID();
setBackgroundOpaque(false);
LLTransientDockableFloater::onFocusLost();
}
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 115da54ec8..572f36ff7d 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -119,8 +119,7 @@ void toast_callback(const LLSD& msg){
}
// check whether incoming IM belongs to an active session or not
- if (LLIMModel::getInstance()->getActiveSessionID().notNull()
- && LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
+ if (LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
{
return;
}
@@ -147,7 +146,7 @@ void toast_callback(const LLSD& msg){
// Skip toasting if we have open window of IM with this session id
LLIMFloater* open_im_floater = LLIMFloater::findInstance(msg["session_id"]);
- if (open_im_floater && open_im_floater->getVisible())
+ if (open_im_floater && open_im_floater->isInVisibleChain() && open_im_floater->hasFocus())
{
return;
}