aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie2012-01-06 17:43:35 +0000
committerMelanie2012-01-06 17:43:35 +0000
commitf8c15d38a614ca7fcfc78a0c2883831ea6cf8137 (patch)
tree3cb565859ea9d31f02504622e4701c68ea62cb43
parentAdd ThreatLevel.NoAccess to OSSL. This allows to enable OSSL without enabling (diff)
downloadopensim-SC-f8c15d38a614ca7fcfc78a0c2883831ea6cf8137.zip
opensim-SC-f8c15d38a614ca7fcfc78a0c2883831ea6cf8137.tar.gz
opensim-SC-f8c15d38a614ca7fcfc78a0c2883831ea6cf8137.tar.bz2
opensim-SC-f8c15d38a614ca7fcfc78a0c2883831ea6cf8137.tar.xz
If dragging a script that is no copy from prim inventory into agent
inventory, stop it first in scene. If deleting from prims, move to trash rather then making it poof.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs55
1 files changed, 39 insertions, 16 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index b62023b..2444367 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -979,25 +979,40 @@ namespace OpenSim.Region.Framework.Scenes
979 public void RemoveTaskInventory(IClientAPI remoteClient, UUID itemID, uint localID) 979 public void RemoveTaskInventory(IClientAPI remoteClient, UUID itemID, uint localID)
980 { 980 {
981 SceneObjectPart part = GetSceneObjectPart(localID); 981 SceneObjectPart part = GetSceneObjectPart(localID);
982 if (part == null) 982 SceneObjectGroup group = null;
983 return; 983 if (part != null)
984 {
985 group = part.ParentGroup;
986 }
987 if (part != null && group != null)
988 {
989 if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId))
990 return;
984 991
985 SceneObjectGroup group = part.ParentGroup; 992 TaskInventoryItem item = group.GetInventoryItem(localID, itemID);
986 if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) 993 if (item == null)
987 return; 994 return;
988
989 TaskInventoryItem item = group.GetInventoryItem(localID, itemID);
990 if (item == null)
991 return;
992 995
993 if (item.Type == 10) 996 InventoryFolderBase destFolder = InventoryService.GetFolderForType(remoteClient.AgentId, AssetType.TrashFolder);
994 { 997
995 part.RemoveScriptEvents(itemID); 998 // Move the item to trash. If this is a copiable item, only
996 EventManager.TriggerRemoveScript(localID, itemID); 999 // a copy will be moved and we will still need to delete
1000 // the item from the prim. If it was no copy, is will be
1001 // deleted by this method.
1002 MoveTaskInventoryItem(remoteClient, destFolder.ID, part, itemID);
1003
1004 if (group.GetInventoryItem(localID, itemID) != null)
1005 {
1006 if (item.Type == 10)
1007 {
1008 part.RemoveScriptEvents(itemID);
1009 EventManager.TriggerRemoveScript(localID, itemID);
1010 }
1011
1012 group.RemoveInventoryItem(localID, itemID);
1013 }
1014 part.SendPropertiesToClient(remoteClient);
997 } 1015 }
998
999 group.RemoveInventoryItem(localID, itemID);
1000 part.SendPropertiesToClient(remoteClient);
1001 } 1016 }
1002 1017
1003 private InventoryItemBase CreateAgentInventoryItemFromTask(UUID destAgent, SceneObjectPart part, UUID itemId) 1018 private InventoryItemBase CreateAgentInventoryItemFromTask(UUID destAgent, SceneObjectPart part, UUID itemId)
@@ -1058,7 +1073,15 @@ namespace OpenSim.Region.Framework.Scenes
1058 if (!Permissions.BypassPermissions()) 1073 if (!Permissions.BypassPermissions())
1059 { 1074 {
1060 if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) 1075 if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
1076 {
1077 if (taskItem.Type == 10)
1078 {
1079 part.RemoveScriptEvents(itemId);
1080 EventManager.TriggerRemoveScript(part.LocalId, itemId);
1081 }
1082
1061 part.Inventory.RemoveInventoryItem(itemId); 1083 part.Inventory.RemoveInventoryItem(itemId);
1084 }
1062 } 1085 }
1063 1086
1064 return agentItem; 1087 return agentItem;