From 367b77eb1b87ba55fd4a94e9b2630a7d002d4399 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Wed, 12 May 2010 14:10:26 +0300
Subject: EXT-6783 FIXED Made notifications that are saved into notification
 well window be persisted and offer notifications non-persisted. reviewed by
 Mike Antipov at https://codereview.productengine.com/secondlife/r/368/

--HG--
branch : product-engine
---
 indra/newview/llfloatersellland.cpp                |  8 +-
 indra/newview/llnotificationstorage.cpp            |  5 +-
 indra/newview/lltoastnotifypanel.cpp               |  5 +-
 indra/newview/llviewermessage.cpp                  |  3 +-
 .../newview/skins/default/xui/en/notifications.xml | 93 +++++++++++++++++++++-
 5 files changed, 102 insertions(+), 12 deletions(-)

diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index 980b456497..9dddbd998a 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -94,7 +94,6 @@ private:
 	static void doSellLand(void *userdata);
 	bool onConfirmSale(const LLSD& notification, const LLSD& response);
 	static void doShowObjects(void *userdata);
-	static bool callbackHighlightTransferable(const LLSD& notification, const LLSD& response);
 
 	void callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids);
 
@@ -102,6 +101,7 @@ public:
 	virtual BOOL postBuild();
 	
 	bool setParcel(LLViewerRegion* region, LLParcelSelectionHandle parcel);
+	static bool callbackHighlightTransferable(const LLSD& notification, const LLSD& response);
 };
 
 // static
@@ -423,11 +423,13 @@ void LLFloaterSellLandUI::doShowObjects(void *userdata)
 
 	send_parcel_select_objects(parcel->getLocalID(), RT_SELL);
 
+	// we shouldn't pass callback functor since it is registered in LLFunctorRegistration
 	LLNotificationsUtil::add("TransferObjectsHighlighted",
-						LLSD(), LLSD(),
-						&LLFloaterSellLandUI::callbackHighlightTransferable);
+						LLSD(), LLSD());
 }
 
+static LLNotificationFunctorRegistration tr("TransferObjectsHighlighted", &LLFloaterSellLandUI::callbackHighlightTransferable);
+
 // static
 bool LLFloaterSellLandUI::callbackHighlightTransferable(const LLSD& notification, const LLSD& data)
 {
diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp
index 316ff4324c..20b40b4e1d 100644
--- a/indra/newview/llnotificationstorage.cpp
+++ b/indra/newview/llnotificationstorage.cpp
@@ -112,8 +112,8 @@ void LLPersistentNotificationStorage::saveNotifications()
 		LLNotificationPtr notification = *it;
 
 		// After a notification was placed in Persist channel, it can become
-		// responded, expired - in this case we are should not save it
-		if(notification->isRespondedTo()
+		// responded, expired or canceled - in this case we are should not save it
+		if(notification->isRespondedTo() || notification->isCancelled()
 			|| notification->isExpired())
 		{
 			continue;
@@ -208,7 +208,6 @@ LLNotificationResponderInterface* LLResponderRegistry::createResponder(const std
 	build_map_t::const_iterator it = sBuildMap.find(notification_name);
 	if(sBuildMap.end() == it)
 	{
-		llwarns << "Responder for notification \'" << notification_name << "\' is not registered" << llendl;
 		return NULL;
 	}
 	responder_constructor_t ctr = it->second;
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 089163929e..9275ca4f42 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -291,7 +291,10 @@ LLToastNotifyPanel::~LLToastNotifyPanel()
 	{
 		// let reusable notification be deleted
 		mNotification->setReusable(false);
-		LLNotifications::getInstance()->cancel(mNotification);
+		if (!mNotification->isPersistent())
+		{
+			LLNotifications::getInstance()->cancel(mNotification);
+		}
 	}
 }
 
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 71e50cacfd..742516f351 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2328,7 +2328,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 
 				LLSD args;
 				args["MESSAGE"] = message;
-				LLNotificationsUtil::add("JoinGroup", args, payload, join_group_response);
+				// we shouldn't pass callback functor since it is registered in LLFunctorRegistration
+				LLNotificationsUtil::add("JoinGroup", args, payload);
 			}
 		}
 		break;
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index cf7cec04de..f5e56c2f46 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -1199,6 +1199,7 @@ Eject [AVATAR_NAME] from your land?
   <notification
    icon="alertmodal.tga"
    name="EjectAvatarFromGroup"
+   persist="true"
    type="notify">
 You ejected [AVATAR_NAME] from group [GROUP_NAME]
   </notification>
@@ -2441,6 +2442,7 @@ Please choose the male or female avatar. You can change your mind later.
   <notification
    icon="alertmodal.tga"
    name="GrantedModifyRights"
+   persist="true"
    type="notify">
 [NAME] has given you permission to edit their objects.
   </notification>
@@ -2448,6 +2450,7 @@ Please choose the male or female avatar. You can change your mind later.
   <notification
    icon="alertmodal.tga"
    name="RevokedModifyRights"
+   persist="true"
    type="notify">
 Your privilege to modify [NAME]&apos;s objects has been revoked
   </notification>
@@ -4362,6 +4365,7 @@ Replaced missing clothing/body part with default.
   <notification
    icon="groupnotify"
    name="GroupNotice"
+   persist="true"
    type="groupnotify">
 Topic: [SUBJECT], Message: [MESSAGE]
   </notification>
@@ -4410,6 +4414,7 @@ Do you wish to proceed?
   <notification
    icon="notify.tga"
    name="UploadPayment"
+   persist="true"
    type="notify">
 You paid L$[AMOUNT] to upload.
   </notification>
@@ -4697,6 +4702,7 @@ Please select at least one type of content to search (General, Moderate, or Adul
   <notification
    icon="notify.tga"
    name="SystemMessage"
+   persist="true"
    type="notify">
 [MESSAGE]
   </notification>
@@ -4704,10 +4710,13 @@ Please select at least one type of content to search (General, Moderate, or Adul
   <notification
    icon="notify.tga"
    name="PaymentRecived"
+   persist="true"
    type="notify">
 [MESSAGE]
   </notification>
 
+   <!-- EventNotification couldn't be persist since server decide is it necessary to notify 
+   user about subscribed event via LLEventNotifier-->
   <notification
    icon="notify.tga"
    name="EventNotification"
@@ -4735,6 +4744,7 @@ Event Notification:
   <notification
    icon="notify.tga"
    name="TransferObjectsHighlighted"
+   persist="true"
    type="notify">
 All objects on this parcel that will transfer to the purchaser of this parcel are now highlighted.
 
@@ -4750,6 +4760,7 @@ All objects on this parcel that will transfer to the purchaser of this parcel ar
   <notification
    icon="notify.tga"
    name="DeactivatedGesturesTrigger"
+   persist="true"
    type="notify">
 Deactivated gestures with same trigger:
 [NAMES]
@@ -4758,6 +4769,7 @@ Deactivated gestures with same trigger:
   <notification
    icon="notify.tga"
    name="NoQuickTime"
+   persist="true"
    type="notify">
 Apple&apos;s QuickTime software does not appear to be installed on your system.
 If you want to view streaming media on parcels that support it you should go to the [http://www.apple.com/quicktime QuickTime site] and install the QuickTime Player.
@@ -4765,6 +4777,7 @@ If you want to view streaming media on parcels that support it you should go to
   <notification
    icon="notify.tga"
    name="NoPlugin"
+   persist="true"
    type="notify">
 No Media Plugin was found to handle the "[MIME_TYPE]" mime type.  Media of this type will be unavailable.
   </notification>
@@ -4784,6 +4797,7 @@ Please re-install the plugin or contact the vendor if you continue to experience
   <notification
    icon="notify.tga"
    name="OwnedObjectsReturned"
+   persist="true"
    type="notify">
 The objects you own on the selected parcel of land have been returned back to your inventory.
   </notification>
@@ -4791,6 +4805,7 @@ The objects you own on the selected parcel of land have been returned back to yo
   <notification
    icon="notify.tga"
    name="OtherObjectsReturned"
+   persist="true"
    type="notify">
 The objects on the selected parcel of land that is owned by [FIRST] [LAST] have been returned to his or her inventory.
   </notification>
@@ -4798,6 +4813,7 @@ The objects on the selected parcel of land that is owned by [FIRST] [LAST] have
   <notification
    icon="notify.tga"
    name="OtherObjectsReturned2"
+   persist="true"
    type="notify">
 The objects on the selected parcel of land owned by the Resident &apos;[NAME]&apos; have been returned to their owner.
   </notification>
@@ -4805,6 +4821,7 @@ The objects on the selected parcel of land owned by the Resident &apos;[NAME]&ap
   <notification
    icon="notify.tga"
    name="GroupObjectsReturned"
+   persist="true"
    type="notify">
 The objects on the selected parcel of land shared with the group [GROUPNAME] have been returned back to their owner&apos;s inventory.
 Transferable deeded objects have been returned to their previous owners.
@@ -4814,6 +4831,7 @@ Non-transferable objects that are deeded to the group have been deleted.
   <notification
    icon="notify.tga"
    name="UnOwnedObjectsReturned"
+   persist="true"
    type="notify">
 The objects on the selected parcel that are NOT owned by you have been returned to their owners.
   </notification>
@@ -4821,6 +4839,7 @@ The objects on the selected parcel that are NOT owned by you have been returned
   <notification
    icon="notify.tga"
    name="ServerObjectMessage"
+   persist="true"
    type="notify">
 Message from [NAME]:
 &lt;nolink&gt;[MSG]&lt;/nolink&gt;
@@ -4829,6 +4848,7 @@ Message from [NAME]:
   <notification
    icon="notify.tga"
    name="NotSafe"
+   persist="true"
    type="notify">
 This land has damage enabled.
 You can be hurt here. If you die, you will be teleported to your home location.
@@ -4838,6 +4858,7 @@ You can be hurt here. If you die, you will be teleported to your home location.
   <notification
    icon="notify.tga"
    name="NoFly"
+   persist="true"
    type="notify">
 This area has flying disabled.
 You can&apos;t fly here.
@@ -4847,6 +4868,7 @@ You can&apos;t fly here.
   <notification
    icon="notify.tga"
    name="PushRestricted"
+   persist="true"
    type="notify">
 This area does not allow pushing. You can&apos;t push others here unless you own the land.
     <unique/>
@@ -4855,6 +4877,7 @@ This area does not allow pushing. You can&apos;t push others here unless you own
   <notification
    icon="notify.tga"
    name="NoVoice"
+   persist="true"
    type="notify">
 This area has voice chat disabled. You won&apos;t be able to hear anyone talking.
     <unique/>
@@ -4863,6 +4886,7 @@ This area has voice chat disabled. You won&apos;t be able to hear anyone talking
   <notification
    icon="notify.tga"
    name="NoBuild"
+   persist="true"
    type="notify">
 This area has building disabled. You can&apos;t build or rez objects here.
     <unique/>
@@ -4871,6 +4895,7 @@ This area has building disabled. You can&apos;t build or rez objects here.
   <notification
    icon="notify.tga"
    name="ScriptsStopped"
+   persist="true"
    type="notify">
 An administrator has temporarily stopped scripts in this region.
   </notification>
@@ -4878,6 +4903,7 @@ An administrator has temporarily stopped scripts in this region.
   <notification
    icon="notify.tga"
    name="ScriptsNotRunning"
+   persist="true"
    type="notify">
 This region is not running any scripts.
   </notification>
@@ -4885,6 +4911,7 @@ This region is not running any scripts.
   <notification
    icon="notify.tga"
    name="NoOutsideScripts"
+   persist="true"
    type="notify">
 This land has outside scripts disabled.
 
@@ -4894,6 +4921,7 @@ No scripts will work here except those belonging to the land owner.
   <notification
    icon="notify.tga"
    name="ClaimPublicLand"
+   persist="true"
    type="notify">
 You can only claim public land in the Region you&apos;re in.
   </notification>
@@ -4901,6 +4929,7 @@ You can only claim public land in the Region you&apos;re in.
   <notification
    icon="notify.tga"
    name="RegionTPAccessBlocked"
+   persist="true"
    type="notify">
 You aren&apos;t allowed in that Region due to your maturity Rating. You may need to validate your age and/or install the latest Viewer.
 
@@ -4910,6 +4939,7 @@ Please go to the Knowledge Base for details on accessing areas with this maturit
   <notification
 	icon="notify.tga"
 	name="URBannedFromRegion"
+   persist="true"
 	type="notify">
 You are banned from the region.
   </notification>
@@ -4917,6 +4947,7 @@ You are banned from the region.
   <notification
 	icon="notify.tga"
 	name="NoTeenGridAccess"
+   persist="true"
 	type="notify">
 Your account cannot connect to this teen grid region.
   </notification>
@@ -4924,6 +4955,7 @@ Your account cannot connect to this teen grid region.
   <notification
 	icon="notify.tga"
 	name="ImproperPaymentStatus"
+   persist="true"
 	type="notify">
 You do not have proper payment status to enter this region.
   </notification>
@@ -4931,6 +4963,7 @@ You do not have proper payment status to enter this region.
   <notification
 	icon="notify.tga"
 	name="MustGetAgeRgion"
+   persist="true"
 	type="notify">
 You must be age-verified to enter this region.
   </notification>
@@ -4938,6 +4971,7 @@ You must be age-verified to enter this region.
   <notification
 	icon="notify.tga"
 	name="MustGetAgeParcel"
+   persist="true"
 	type="notify">
 You must be age-verified to enter this parcel.
   </notification>
@@ -4945,6 +4979,7 @@ You must be age-verified to enter this parcel.
   <notification
 	icon="notify.tga"
 	name="NoDestRegion"
+   persist="true"
 	type="notify">
 No destination region found.
   </notification>
@@ -4952,6 +4987,7 @@ No destination region found.
   <notification
 	icon="notify.tga"
 	name="NotAllowedInDest"
+   persist="true"
 	type="notify">
 You are not allowed into the destination.
   </notification>
@@ -4959,6 +4995,7 @@ You are not allowed into the destination.
   <notification
 	icon="notify.tga"
 	name="RegionParcelBan"
+   persist="true"
 	type="notify">
 Cannot region cross into banned parcel. Try another way.
   </notification>
@@ -4966,6 +5003,7 @@ Cannot region cross into banned parcel. Try another way.
   <notification
 	icon="notify.tga"
 	name="TelehubRedirect"
+   persist="true"
 	type="notify">
 You have been redirected to a telehub.
   </notification>
@@ -4973,6 +5011,7 @@ You have been redirected to a telehub.
   <notification
 	icon="notify.tga"
 	name="CouldntTPCloser"
+   persist="true"
 	type="notify">
 Could not teleport closer to destination.
   </notification>
@@ -4980,6 +5019,7 @@ Could not teleport closer to destination.
   <notification
 	icon="notify.tga"
 	name="TPCancelled"
+   persist="true"
 	type="notify">
 Teleport cancelled.
   </notification>
@@ -4987,6 +5027,7 @@ Teleport cancelled.
   <notification
 	icon="notify.tga"
 	name="FullRegionTryAgain"
+   persist="true"
 	type="notify">
 The region you are attempting to enter is currently full.
 Please try again in a few moments.
@@ -4995,6 +5036,7 @@ Please try again in a few moments.
   <notification
 	icon="notify.tga"
 	name="GeneralFailure"
+   persist="true"
 	type="notify">
 General failure.
   </notification>
@@ -5002,6 +5044,7 @@ General failure.
   <notification
 	icon="notify.tga"
 	name="RoutedWrongRegion"
+   persist="true"
 	type="notify">
 Routed to wrong region. Please try again.
   </notification>
@@ -5009,6 +5052,7 @@ Routed to wrong region. Please try again.
   <notification
 	icon="notify.tga"
 	name="NoValidAgentID"
+   persist="true"
 	type="notify">
 No valid agent id.
   </notification>
@@ -5016,6 +5060,7 @@ No valid agent id.
   <notification
 	icon="notify.tga"
 	name="NoValidSession"
+   persist="true"
 	type="notify">
 No valid session id.
   </notification>
@@ -5023,6 +5068,7 @@ No valid session id.
   <notification
 	icon="notify.tga"
 	name="NoValidCircuit"
+   persist="true"
 	type="notify">
 No valid circuit code.
   </notification>
@@ -5030,6 +5076,7 @@ No valid circuit code.
   <notification
 	icon="notify.tga"
 	name="NoValidTimestamp"
+   persist="true"
 	type="notify">
 No valid timestamp.
   </notification>
@@ -5037,6 +5084,7 @@ No valid timestamp.
   <notification
 	icon="notify.tga"
 	name="NoPendingConnection"
+   persist="true"
 	type="notify">
 Unable to create pending connection.
   </notification>
@@ -5044,6 +5092,7 @@ Unable to create pending connection.
   <notification
 	icon="notify.tga"
 	name="InternalUsherError"
+   persist="true"
 	type="notify">
 Internal error attempting to connect agent usher.
   </notification>
@@ -5051,6 +5100,7 @@ Internal error attempting to connect agent usher.
   <notification
 	icon="notify.tga"
 	name="NoGoodTPDestination"
+   persist="true"
 	type="notify">
 Unable to find a good teleport destination in this region.
   </notification>
@@ -5058,6 +5108,7 @@ Unable to find a good teleport destination in this region.
   <notification
 	icon="notify.tga"
 	name="InternalErrorRegionResolver"
+   persist="true"
 	type="notify">
 Internal error attempting to activate region resolver.
   </notification>
@@ -5065,6 +5116,7 @@ Internal error attempting to activate region resolver.
   <notification
 	icon="notify.tga"
 	name="NoValidLanding"
+   persist="true"
 	type="notify">
 A valid landing point could not be found.
   </notification>
@@ -5072,6 +5124,7 @@ A valid landing point could not be found.
   <notification
 	icon="notify.tga"
 	name="NoValidParcel"
+   persist="true"
 	type="notify">
 No valid parcel could be found.
   </notification>
@@ -5079,7 +5132,6 @@ No valid parcel could be found.
   <notification
    icon="notify.tga"
    name="ObjectGiveItem"
-   persist="true"
    type="offer">
 An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJECTTYPE]:
 [ITEM_SLURL]
@@ -5102,7 +5154,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="UserGiveItem"
-   persist="true"
    type="offer">
 [NAME_SLURL] has given you this [OBJECTTYPE]:
 [ITEM_SLURL]
@@ -5125,6 +5176,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="GodMessage"
+   persist="true"
    type="notify">
 [NAME]
 
@@ -5134,6 +5186,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="JoinGroup"
+   persist="true"
    type="notify">
 [MESSAGE]
     <form name="form">
@@ -5155,7 +5208,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="TeleportOffered"
-   persist="true"
    type="offer">
 [NAME_SLURL] has offered to teleport you to their location:
 
@@ -5183,6 +5235,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="GotoURL"
+   persist="true"
    type="notify">
 [MESSAGE]
 [URL]
@@ -5201,7 +5254,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="OfferFriendship"
-   persist="true"
    type="offer">
 [NAME_SLURL] is offering friendship.
 
@@ -5230,6 +5282,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="OfferFriendshipNoMessage"
+   persist="true"
    type="notify">
 [NAME] is offering friendship.
 
@@ -5256,6 +5309,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
   <notification
    icon="notify.tga"
    name="FriendshipDeclined"
+   persist="true"
    type="notify">
 [NAME] declined your friendship offer.
   </notification>
@@ -5277,6 +5331,7 @@ Friendship offer declined.
   <notification
    icon="notify.tga"
    name="OfferCallingCard"
+   persist="true"
    type="notify">
 [FIRST] [LAST] is offering their calling card.
 This will add a bookmark in your inventory so you can quickly IM this Resident.
@@ -5297,6 +5352,7 @@ This will add a bookmark in your inventory so you can quickly IM this Resident.
    name="RegionRestartMinutes"
    priority="high"
    sound="UISndAlert"
+   persist="true"
    type="notify">
 This region will restart in [MINUTES] minutes.
 If you stay in this region you will be logged out.
@@ -5307,6 +5363,7 @@ If you stay in this region you will be logged out.
    name="RegionRestartSeconds"
    priority="high"
    sound="UISndAlert"
+   persist="true"
    type="notify">
 This region will restart in [SECONDS] seconds.
 If you stay in this region you will be logged out.
@@ -5315,6 +5372,7 @@ If you stay in this region you will be logged out.
   <notification
    icon="notify.tga"
    name="LoadWebPage"
+   persist="true"
    type="notify">
 Load web page [URL]?
 
@@ -5336,6 +5394,7 @@ From object: [OBJECTNAME], owner: [NAME]?
   <notification
    icon="notify.tga"
    name="FailedToFindWearableUnnamed"
+   persist="true"
    type="notify">
 Failed to find [TYPE] in database.
   </notification>
@@ -5343,6 +5402,7 @@ Failed to find [TYPE] in database.
   <notification
    icon="notify.tga"
    name="FailedToFindWearable"
+   persist="true"
    type="notify">
 Failed to find [TYPE] named [DESC] in database.
   </notification>
@@ -5350,6 +5410,7 @@ Failed to find [TYPE] named [DESC] in database.
   <notification
    icon="notify.tga"
    name="ShareToWebFailed"
+   persist="true"
    type="notify">
     Failed to upload image to web.
   </notification>
@@ -5357,6 +5418,7 @@ Failed to find [TYPE] named [DESC] in database.
   <notification
    icon="notify.tga"
    name="InvalidWearable"
+   persist="true"
    type="notify">
 The item you are trying to wear uses a feature that your Viewer can&apos;t read. Please upgrade your version of [APP_NAME] to wear this item.
   </notification>
@@ -5364,6 +5426,7 @@ The item you are trying to wear uses a feature that your Viewer can&apos;t read.
   <notification
    icon="notify.tga"
    name="ScriptQuestion"
+   persist="true"
    type="notify">
 &apos;[OBJECTNAME]&apos;, an object owned by &apos;[NAME]&apos;, would like to:
 
@@ -5389,6 +5452,7 @@ Is this OK?
    icon="notify.tga"
    name="ScriptQuestionCaution"
    priority="high"
+   persist="true"
    type="notify">
 An object named &apos;[OBJECTNAME]&apos;, owned by &apos;[NAME]&apos; would like to:
 
@@ -5416,6 +5480,7 @@ Grant this request?
   <notification
    icon="notify.tga"
    name="ScriptDialog"
+   persist="true"
    type="notify">
 [FIRST] [LAST]&apos;s &apos;[TITLE]&apos;
 [MESSAGE]
@@ -5430,6 +5495,7 @@ Grant this request?
   <notification
    icon="notify.tga"
    name="ScriptDialogGroup"
+   persist="true"
    type="notify">
 [GROUPNAME]&apos;s &apos;[TITLE]&apos;
 [MESSAGE]
@@ -5445,6 +5511,7 @@ Grant this request?
   <notification
    icon="notify.tga"
    name="FirstBalanceIncrease"
+   persist="true"
    type="notify">
 You just received L$[AMOUNT].
 Your L$ balance is shown in the upper-right.
@@ -5453,6 +5520,7 @@ Your L$ balance is shown in the upper-right.
   <notification
    icon="notify.tga"
    name="FirstBalanceDecrease"
+   persist="true"
    type="notify">
 You just paid L$[AMOUNT].
 Your L$ balance is shown in the upper-right.
@@ -5462,6 +5530,7 @@ Your L$ balance is shown in the upper-right.
   <notification
    icon="notify.tga"
    name="BuyLindenDollarSuccess"
+   persist="true"
    type="notify">
 Thank you for your payment!
 
@@ -5474,6 +5543,7 @@ The status of your payment can be checked on your Transaction History page on yo
   <notification
    icon="notify.tga"
    name="FirstSit"
+   persist="true"
    type="notify">
 You are sitting.
 Use your arrow keys (or AWSD) to look around.
@@ -5483,6 +5553,7 @@ Click the &apos;Stand Up&apos; button to stand.
   <notification
    icon="notify.tga"
    name="FirstMap"
+   persist="true"
    type="notify">
 Click and drag the map to look around.
 Double-click to teleport.
@@ -5492,6 +5563,7 @@ Use the controls on the right to find things and display different backgrounds.
   <notification
    icon="notify.tga"
    name="FirstBuild"
+   persist="true"
    type="notify">
 You have opened the Build Tools. Every object you see around you was created using these tools.
   </notification>
@@ -5501,6 +5573,7 @@ You have opened the Build Tools. Every object you see around you was created usi
   <notification
    icon="notify.tga"
    name="FirstLeftClickNoHit"
+   persist="true"
    type="notify">
     Left-clicking interacts with special objects.
     If the mouse pointer changes to a hand, you can interact with the object.
@@ -5510,6 +5583,7 @@ You have opened the Build Tools. Every object you see around you was created usi
   <notification
    icon="notify.tga"
    name="FirstTeleport"
+   persist="true"
    type="notify">
 You can only teleport to certain areas in this region. The arrow points to your specific destination. Click the arrow to dismiss it.
   </notification>
@@ -5519,6 +5593,7 @@ You can only teleport to certain areas in this region. The arrow points to your
   <notification
    icon="notify.tga"
    name="FirstOverrideKeys"
+   persist="true"
    type="notify">
 Your movement keys are now being handled by an object.
 Try the arrow keys or AWSD to see what they do.
@@ -5530,6 +5605,7 @@ Press &apos;M&apos; to do this.
   <notification
    icon="notify.tga"
    name="FirstAppearance"
+   persist="true"
    type="notify">
 You are editing your Appearance.
 Use the arrow keys to look around.
@@ -5539,6 +5615,7 @@ When you are done, press &apos;Save All&apos;.
   <notification
    icon="notify.tga"
    name="FirstInventory"
+   persist="true"
    type="notify">
 This is your Inventory, which contains items you own.
 
@@ -5551,6 +5628,7 @@ This is your Inventory, which contains items you own.
   <notification
    icon="notify.tga"
    name="FirstSandbox"
+   persist="true"
    type="notify">
 This is a sandbox area, and is meant to help Residents learn how to build.
 
@@ -5561,6 +5639,7 @@ Things you build here will be deleted after you leave, so don&apos;t forget to r
   <notification
    icon="notify.tga"
    name="FirstFlexible"
+   persist="true"
    type="notify">
 This object is flexible. Flexis must be phantom and not physical.
   </notification>
@@ -5568,6 +5647,7 @@ This object is flexible. Flexis must be phantom and not physical.
   <notification
    icon="notify.tga"
    name="FirstDebugMenus"
+   persist="true"
    type="notify">
 You opened the Advanced menu.
 
@@ -5580,6 +5660,7 @@ To toggle this menu,
   <notification
    icon="notify.tga"
    name="FirstSculptedPrim"
+   persist="true"
    type="notify">
 You are editing a Sculpted prim. Sculpties require a special texture to define their shape.
   </notification>
@@ -5589,6 +5670,7 @@ You are editing a Sculpted prim. Sculpties require a special texture to define t
   <notification
    icon="notify.tga"
    name="FirstMedia"
+   persist="true"
    type="notify">
     You have begun playing media.  Media can set to play automatically in the preferences window under Audio / Video. Note that this can be a security risk for media sites you do not trust.
   </notification>
@@ -5629,6 +5711,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
   <notification
    icon="notify.tga"
    name="AutoUnmuteByIM"
+   persist="true"
    type="notify">
 [FIRST] [LAST] was sent an instant message and has been automatically unblocked.
   </notification>
@@ -5636,6 +5719,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
   <notification
    icon="notify.tga"
    name="AutoUnmuteByMoney"
+   persist="true"
    type="notify">
 [FIRST] [LAST] was given money and has been automatically unblocked.
   </notification>
@@ -5643,6 +5727,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
   <notification
    icon="notify.tga"
    name="AutoUnmuteByInventory"
+   persist="true"
    type="notify">
 [FIRST] [LAST] was offered inventory and has been automatically unblocked.
   </notification>
-- 
cgit v1.2.3