diff options
author | Dmitry Zaporozhan <dzaporozhan@productengine.com> | 2010-01-11 14:12:03 +0200 |
---|---|---|
committer | Dmitry Zaporozhan <dzaporozhan@productengine.com> | 2010-01-11 14:12:03 +0200 |
commit | d0c029c6094bf23ad9a016d9029b830d674a566a (patch) | |
tree | 3d17c59b14a72173725c63d5175cc8b1893b90a5 | |
parent | 86b78d84bc95017fe3060bc1cca994858159ca7a (diff) |
Fixed normal bug EXT-3764 - Notifications should not stack when selected from the Well.
--HG--
branch : product-engine
-rw-r--r-- | indra/newview/llscreenchannel.cpp | 14 | ||||
-rw-r--r-- | indra/newview/llscreenchannel.h | 2 | ||||
-rw-r--r-- | indra/newview/llsyswellwindow.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llsyswellwindow.h | 3 |
4 files changed, 22 insertions, 1 deletions
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index da3f1543dd..d0b537cdfc 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -357,7 +357,6 @@ void LLScreenChannel::loadStoredToastByNotificationIDToChannel(LLUUID id) toast->setIsHidden(false); toast->resetTimer(); mToastList.push_back((*it)); - mStoredToastList.erase(it); redrawToasts(); } @@ -779,6 +778,19 @@ void LLScreenChannel::hideToastsFromScreen() } //-------------------------------------------------------------------------- +void LLScreenChannel::hideToast(const LLUUID& notification_id) +{ + std::vector<ToastElem>::iterator it = find(mToastList.begin(), mToastList.end(), notification_id); + if(mToastList.end() != it) + { + ToastElem te = *it; + te.toast->setVisible(FALSE); + te.toast->stopTimer(); + mToastList.erase(it); + } +} + +//-------------------------------------------------------------------------- void LLScreenChannel::removeToastsFromChannel() { hideToastsFromScreen(); diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h index 38f27f756b..661b9e4e60 100644 --- a/indra/newview/llscreenchannel.h +++ b/indra/newview/llscreenchannel.h @@ -176,6 +176,8 @@ public: void modifyToastByNotificationID(LLUUID id, LLPanel* panel); // hide all toasts from screen, but not remove them from a channel void hideToastsFromScreen(); + // hide toast by notification id + void hideToast(const LLUUID& notification_id); // removes all toasts from a channel void removeToastsFromChannel(); // show all toasts in a channel diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 44cf82540a..b5884e8364 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -701,7 +701,11 @@ void LLNotificationWellWindow::onItemClick(LLSysWellItem* item) { LLUUID id = item->getID(); if(mChannel) + { + mChannel->hideToast(mLoadedToastId); mChannel->loadStoredToastByNotificationIDToChannel(id); + mLoadedToastId = id; + } } void LLNotificationWellWindow::onItemClose(LLSysWellItem* item) diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index ded3abcbf4..0c81d1f369 100644 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -162,6 +162,9 @@ private: void onItemClick(LLSysWellItem* item); void onItemClose(LLSysWellItem* item); + // ID of a toast loaded by user (by clicking notification well item) + LLUUID mLoadedToastId; + }; /** |