diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 3f531bee86..4d1e5642a6 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -2751,7 +2751,8 @@ namespace OpenSim.Region.Framework.Scenes /// public void SetRootPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID) { - part.LastOwnerID = part.OwnerID; + if(part.GroupID != part.OwnerID && cGroupID != part.OwnerID) + part.LastOwnerID = part.OwnerID; part.OwnerID = cAgentID; part.GroupID = cGroupID; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 9f996659f3..87ce0b7aa6 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2228,7 +2228,11 @@ namespace OpenSim.Region.Framework.Scenes dupe.LocalId = plocalID; // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated. - dupe.LastOwnerID = OwnerID; + if(OwnerID != GroupID) + dupe.LastOwnerID = OwnerID; + else + dupe.LastOwnerID = LastOwnerID; // redundant ? + dupe.RezzerID = RezzerID; byte[] extraP = new byte[Shape.ExtraParams.Length]; @@ -5246,7 +5250,8 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter //LogPermissions("After ApplyNextOwnerPermissions"); - LastOwnerID = OwnerID; + if(OwnerID != GroupID) + LastOwnerID = OwnerID; OwnerID = item.Owner; Inventory.ChangeInventoryOwner(item.Owner); } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index a55936f4eb..4dd8eb1262 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -965,7 +965,8 @@ namespace OpenSim.Region.Framework.Scenes { if ((part.OwnerID != item.OwnerID) || (item.CurrentPermissions & (uint)PermissionMask.Slam) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) { - part.LastOwnerID = part.OwnerID; + if(part.GroupID != part.OwnerID) + part.LastOwnerID = part.OwnerID; part.OwnerID = item.OwnerID; part.Inventory.ChangeInventoryOwner(item.OwnerID); }