diff options
author | Alexei Arabadji <aarabadji@productengine.com> | 2010-05-14 10:11:49 +0300 |
---|---|---|
committer | Alexei Arabadji <aarabadji@productengine.com> | 2010-05-14 10:11:49 +0300 |
commit | 07678ad2db9ffca1cacdab4f28c63e01e8e6f514 (patch) | |
tree | 398f9ae1ea643b500e34f3de83c193a498c5f693 | |
parent | a9680462828d99cb482cdb235f14d6bd3c87bc9c (diff) |
EXT-7121 FIXED Added check is IM window visible to avoid blinking and changing IM well button background when IM window isn't visible.
--HG--
branch : product-engine
-rw-r--r-- | indra/newview/llchiclet.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 9c4aa7b964..6897f4ee8e 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -183,20 +183,6 @@ void LLSysWellChiclet::setCounter(S32 counter) mButton->setLabel(s_count); - setNewMessagesState(counter > mCounter); - - // we have to flash to 'Lit' state each time new unread message is coming. - if (counter > mCounter) - { - mFlashToLitTimer->flash(); - } - else if (counter == 0) - { - // if notification is resolved while well is flashing it can leave in the 'Lit' state - // when flashing finishes itself. Let break flashing here. - mFlashToLitTimer->stopFlashing(); - } - mCounter = counter; } @@ -316,7 +302,26 @@ void LLIMWellChiclet::createMenu() void LLIMWellChiclet::messageCountChanged(const LLSD& session_data) { - setCounter(LLBottomTray::getInstance()->getTotalUnreadIMCount()); + const LLUUID& session_id = session_data["session_id"]; + const S32 counter = LLBottomTray::getInstance()->getTotalUnreadIMCount(); + const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container") + && !LLFloaterReg::instanceVisible("impanel", session_id); + + setNewMessagesState(counter > mCounter && im_not_visible); + + // we have to flash to 'Lit' state each time new unread message is coming. + if (counter > mCounter && im_not_visible) + { + mFlashToLitTimer->flash(); + } + else if (counter == 0) + { + // if notification is resolved while well is flashing it can leave in the 'Lit' state + // when flashing finishes itself. Let break flashing here. + mFlashToLitTimer->stopFlashing(); + } + + setCounter(counter); } /************************************************************************/ |