diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-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 e7a3b42..6031697 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1151,6 +1151,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1151 | return; | 1151 | return; |
1152 | } | 1152 | } |
1153 | 1153 | ||
1154 | UUID partUUID = part.UUID; | ||
1155 | SceneObjectGroup group = part.ParentGroup; | ||
1156 | if (group != null) | ||
1157 | partUUID = group.RootPart.UUID; | ||
1158 | |||
1154 | TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); | 1159 | TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); |
1155 | 1160 | ||
1156 | if (null == taskItem) | 1161 | if (null == taskItem) |
@@ -1162,19 +1167,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
1162 | return; | 1167 | return; |
1163 | } | 1168 | } |
1164 | 1169 | ||
1165 | TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId); | 1170 | if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1166 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | ||
1167 | { | 1171 | { |
1168 | // If the item to be moved is no copy, we need to be able to | 1172 | // If the item to be moved is no copy, we need to be able to |
1169 | // edit the prim. | 1173 | // edit the prim. |
1170 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) | 1174 | if (!Permissions.CanEditObjectInventory(partUUID, remoteClient.AgentId)) |
1171 | return; | 1175 | return; |
1172 | } | 1176 | } |
1173 | else | 1177 | else |
1174 | { | 1178 | { |
1175 | // If the item is copiable, then we just need to have perms | 1179 | // If the item is copiable, then we just need to have perms |
1176 | // on it. The delete check is a pure rights check | 1180 | // on it. The delete check is a pure rights check |
1177 | if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId)) | 1181 | if (!Permissions.CanDeleteObject(partUUID, remoteClient.AgentId)) |
1178 | return; | 1182 | return; |
1179 | } | 1183 | } |
1180 | 1184 | ||