From 95e524dde100aa14d71a49ee5d5f0cc4b5fa45f7 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 1 Apr 2011 18:49:53 +0200
Subject: A stab at making CHANGED_OWNER work

---
 .../Framework/InventoryAccess/InventoryAccessModule.cs   | 16 +++++++---------
 .../Region/Framework/Scenes/SceneObjectPartInventory.cs  | 10 +++++-----
 2 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 108c9a0..0fbd5e7 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -823,21 +823,19 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
                                     }
                                 }
                                 
+                                foreach (SceneObjectPart part in group.Parts)
+                                {
+                                    part.LastOwnerID = part.OwnerID;
+                                    part.OwnerID = item.Owner;
+                                    part.Inventory.ChangeInventoryOwner(item.Owner);
+                                }
+
                                 group.ApplyNextOwnerPermissions();
                             }
                         }
 
                         foreach (SceneObjectPart part in group.Parts)
                         {
-                            // TODO: Remove the magic number badness
-                            if ((part.OwnerID != item.Owner) ||
-                                (item.CurrentPermissions & 16) != 0 || // Magic number
-                                (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0)
-                            {
-                                part.LastOwnerID = part.OwnerID;
-                                part.OwnerID = item.Owner;
-                                part.Inventory.ChangeInventoryOwner(item.Owner);
-                            }
                             if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteEveryone) != 0)
                                 part.EveryoneMask = item.EveryOnePermissions;
                             if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteNextOwner) != 0)
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 854f1dc..1992956 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -186,12 +186,12 @@ namespace OpenSim.Region.Framework.Scenes
             foreach (TaskInventoryItem item in items)
             {
                 if (ownerId != item.OwnerID)
-                {
                     item.LastOwnerID = item.OwnerID;
-                    item.OwnerID = ownerId;
-                    item.PermsMask = 0;
-                    item.PermsGranter = UUID.Zero;
-                }
+
+                item.OwnerID = ownerId;
+                item.PermsMask = 0;
+                item.PermsGranter = UUID.Zero;
+                item.OwnerChanged = true;
             }
             m_items.LockItemsForWrite(false);
         }
-- 
cgit v1.1