diff options
author | Melanie | 2012-01-06 17:43:35 +0000 |
---|---|---|
committer | Melanie | 2012-01-06 17:43:35 +0000 |
commit | f8c15d38a614ca7fcfc78a0c2883831ea6cf8137 (patch) | |
tree | 3cb565859ea9d31f02504622e4701c68ea62cb43 /OpenSim/Region/Framework | |
parent | Add ThreatLevel.NoAccess to OSSL. This allows to enable OSSL without enabling (diff) | |
download | opensim-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 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 55 |
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; |