diff options
Diffstat (limited to 'indra/newview')
-rwxr-xr-x | indra/newview/llchiclet.cpp | 4 | ||||
-rwxr-xr-x | indra/newview/llmutelist.cpp | 5 | ||||
-rwxr-xr-x | indra/newview/llscriptfloater.cpp | 12 | ||||
-rwxr-xr-x | indra/newview/llscriptfloater.h | 5 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/menu_script_chiclet.xml | 8 |
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> |