diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 6cc78b8..132f15d 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1144,6 +1144,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1144 | return; | 1144 | return; |
1145 | } | 1145 | } |
1146 | 1146 | ||
1147 | UUID partUUID = part.UUID; | ||
1148 | SceneObjectGroup group = part.ParentGroup; | ||
1149 | if (group != null) | ||
1150 | partUUID = group.RootPart.UUID; | ||
1151 | |||
1147 | TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); | 1152 | TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); |
1148 | 1153 | ||
1149 | if (null == taskItem) | 1154 | if (null == taskItem) |
@@ -1155,19 +1160,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
1155 | return; | 1160 | return; |
1156 | } | 1161 | } |
1157 | 1162 | ||
1158 | TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId); | 1163 | if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1159 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | ||
1160 | { | 1164 | { |
1161 | // If the item to be moved is no copy, we need to be able to | 1165 | // If the item to be moved is no copy, we need to be able to |
1162 | // edit the prim. | 1166 | // edit the prim. |
1163 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) | 1167 | if (!Permissions.CanEditObjectInventory(partUUID, remoteClient.AgentId)) |
1164 | return; | 1168 | return; |
1165 | } | 1169 | } |
1166 | else | 1170 | else |
1167 | { | 1171 | { |
1168 | // If the item is copiable, then we just need to have perms | 1172 | // If the item is copiable, then we just need to have perms |
1169 | // on it. The delete check is a pure rights check | 1173 | // on it. The delete check is a pure rights check |
1170 | if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId)) | 1174 | if (!Permissions.CanDeleteObject(partUUID, remoteClient.AgentId)) |
1171 | return; | 1175 | return; |
1172 | } | 1176 | } |
1173 | 1177 | ||