diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llnotificationhandler.h | 5 | ||||
-rw-r--r-- | indra/newview/llnotificationhandlerutil.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llnotificationofferhandler.cpp | 2 | ||||
-rw-r--r-- | indra/newview/lltoastnotifypanel.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llviewermessage.cpp | 3 |
5 files changed, 19 insertions, 5 deletions
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 62008b91a0..1dc0e414a2 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -291,6 +291,11 @@ public: static bool canAddNotifPanelToIM(const LLNotificationPtr& notification); /** + * Checks whether notification can be used multiple times or not. + */ + static bool isNotificationReusable(const LLNotificationPtr& notification); + + /** * Checks if passed notification can create IM session and be written into it. * * This method uses canLogToIM() & canSpawnIMSession(). diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index 55e0f33121..d3ad61128d 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -177,6 +177,14 @@ bool LLHandlerUtil::canAddNotifPanelToIM(const LLNotificationPtr& notification) } // static +bool LLHandlerUtil::isNotificationReusable(const LLNotificationPtr& notification) +{ + return OFFER_FRIENDSHIP == notification->getName() + || USER_GIVE_ITEM == notification->getName() + || TELEPORT_OFFERED == notification->getName(); +} + +// static bool LLHandlerUtil::canSpawnSessionAndLogToIM(const LLNotificationPtr& notification) { return canLogToIM(notification) && canSpawnIMSession(notification); diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index 0a42d8adbe..e93aec9d01 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -103,6 +103,8 @@ bool LLOfferHandler::processNotification(const LLSD& notify) } else { + notification->setReusable(LLHandlerUtil::isNotificationReusable(notification)); + LLUUID session_id; if (LLHandlerUtil::canSpawnIMSession(notification)) { diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index d7a3bc1462..907740a88e 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -205,7 +205,7 @@ mCloseNotificationOnDestroy(true) mInfoPanel->setFollowsAll(); snapToMessageHeight(mTextBox, MAX_LENGTH); - if(notification->getPayload()["reusable"].asBoolean()) + if(notification->isReusable()) { mButtonClickConnection = sButtonClickSignal.connect( boost::bind(&LLToastNotifyPanel::onToastPanelButtonClicked, this, _1, _2)); @@ -288,6 +288,8 @@ LLToastNotifyPanel::~LLToastNotifyPanel() std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer()); if (mCloseNotificationOnDestroy && LLNotificationsUtil::find(mNotification->getID()) != NULL) { + // let reusable notification be deleted + mNotification->setReusable(false); LLNotifications::getInstance()->cancel(mNotification); } } @@ -473,7 +475,7 @@ void LLToastNotifyPanel::onClickButton(void* data) response[button_name] = true; } - bool is_reusable = self->mNotification->getPayload()["reusable"].asBoolean(); + bool is_reusable = self->mNotification->isReusable(); // When we call respond(), LLOfferInfo will delete itself in inventory_offer_callback(), // lets copy it while it's still valid. LLOfferInfo* old_info = static_cast<LLOfferInfo*>(self->mNotification->getResponder()); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 7ecff4c2d8..3d0dfbed40 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1590,7 +1590,6 @@ void inventory_offer_handler(LLOfferInfo* info) } else // Agent -> Agent Inventory Offer { - payload["reusable"] = true; p.responder = info; // Note: sets inventory_offer_callback as the callback // *TODO fix memory leak @@ -2323,7 +2322,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) payload["from_id"] = from_id; payload["lure_id"] = session_id; payload["godlike"] = FALSE; - payload["reusable"] = true; LLNotificationsUtil::add("TeleportOffered", args, payload); } } @@ -2392,7 +2390,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } else { - payload["reusable"] = true; args["[MESSAGE]"] = message; LLNotificationsUtil::add("OfferFriendship", args, payload); } |