summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llchiclet.cpp4
-rwxr-xr-xindra/newview/llmutelist.cpp5
-rwxr-xr-xindra/newview/llscriptfloater.cpp12
-rwxr-xr-xindra/newview/llscriptfloater.h5
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_script_chiclet.xml8
5 files changed, 34 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/llmutelist.cpp b/indra/newview/llmutelist.cpp
index d79baf90e7..3f4f2446e8 100755
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -315,6 +315,11 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
{
LLPipeline::removeMutedAVsLights(avatarp);
}
+ //remove agent's notifications as well
+ if (localmute.mType == LLMute::AGENT)
+ {
+ LLNotifications::instance().cancelByOwner(localmute.mID);
+ }
return TRUE;
}
}
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>