summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndreyL ProductEngine <alihatskiy@productengine.com>2016-01-11 03:24:36 +0200
committerAndreyL ProductEngine <alihatskiy@productengine.com>2016-01-11 03:24:36 +0200
commit29cb3a4a93543c41b23ba429c4d04189c24d30fc (patch)
tree7f13fb19fa83beb23a74a48df3de4bfba268824d /indra/newview
parent28c705fd1cc704ebff91339f87671337bd8987b9 (diff)
MAINT-6018 Open URL dialog spam
Added the ability to close all notifications from one owner at once
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llchiclet.cpp4
-rwxr-xr-xindra/newview/llscriptfloater.cpp12
-rwxr-xr-xindra/newview/llscriptfloater.h5
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_script_chiclet.xml8
4 files changed, 29 insertions, 0 deletions
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index dedb06c945..ad26bbd491 100755
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -1092,6 +1092,10 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data)
{
LLScriptFloaterManager::instance().removeNotification(getSessionId());
}
+ else if ("end_owner" == action)
+ {
+ LLScriptFloaterManager::instance().removeAllNotificationsByOwner(getSessionId());
+ }
}
void LLScriptChiclet::createPopupMenu()
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 1d021ec28f..b5b5bc855d 100755
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -420,6 +420,18 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
toggleScriptFloater(notification_id, set_new_message);
}
+void LLScriptFloaterManager::removeAllNotificationsByOwner(const LLUUID& notification_id)
+{
+ LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+ if (notification != NULL && !notification->isCancelled())
+ {
+ LLSD payload = notification->getPayload();
+ LLUUID owner = payload.get("owner_id").asUUID();
+
+ LLNotifications::instance().cancelByOwner(owner);
+ }
+}
+
void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id)
{
LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index 70451194b3..bb35526cf7 100755
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -60,6 +60,11 @@ public:
void onAddNotification(const LLUUID& notification_id);
/**
+ * Removes all notifications by owner id.
+ */
+ void removeAllNotificationsByOwner(const LLUUID& notification_id);
+
+ /**
* Removes notification.
*/
void removeNotification(const LLUUID& notification_id);
diff --git a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
index db29d9cebc..ceeef1cd46 100755
--- a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
+++ b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
@@ -16,4 +16,12 @@
function="ScriptChiclet.Action"
parameter="end" />
</menu_item_call>
+ <menu_item_call
+ label="Close by owner"
+ layout="topleft"
+ name="CloseByOwner">
+ <menu_item_call.on_click
+ function="ScriptChiclet.Action"
+ parameter="end_owner" />
+ </menu_item_call>
</menu>