From 15ce73caca9ea6448e34b95d344cbbf5c9507f6d Mon Sep 17 00:00:00 2001
From: PixelTomsen
Date: Tue, 21 Feb 2012 19:37:14 +0100
Subject: Fix:Cannot drag inventory from child prim into inventory
 http://opensimulator.org/mantis/view.php?id=5569

---
 OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 12 ++++++++----
 1 file 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
                 return;
             }
 
+            UUID partUUID = part.UUID;
+            SceneObjectGroup group = part.ParentGroup;
+            if (group != null)
+                partUUID = group.RootPart.UUID;
+
             TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId);
 
             if (null == taskItem)
@@ -1155,19 +1160,18 @@ namespace OpenSim.Region.Framework.Scenes
                 return;
             }
 
-            TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId);
-            if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
+            if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
             {
                 // If the item to be moved is no copy, we need to be able to
                 // edit the prim.
-                if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId))
+                if (!Permissions.CanEditObjectInventory(partUUID, remoteClient.AgentId))
                     return;
             }
             else
             {
                 // If the item is copiable, then we just need to have perms
                 // on it. The delete check is a pure rights check
-                if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId))
+                if (!Permissions.CanDeleteObject(partUUID, remoteClient.AgentId))
                     return;
             }
 
-- 
cgit v1.1