aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs9
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs3
3 files changed, 11 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 3f531be..4d1e564 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2751,7 +2751,8 @@ namespace OpenSim.Region.Framework.Scenes
2751 /// <param name="cGroupID"></param> 2751 /// <param name="cGroupID"></param>
2752 public void SetRootPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID) 2752 public void SetRootPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID)
2753 { 2753 {
2754 part.LastOwnerID = part.OwnerID; 2754 if(part.GroupID != part.OwnerID && cGroupID != part.OwnerID)
2755 part.LastOwnerID = part.OwnerID;
2755 part.OwnerID = cAgentID; 2756 part.OwnerID = cAgentID;
2756 part.GroupID = cGroupID; 2757 part.GroupID = cGroupID;
2757 2758
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 9f99665..87ce0b7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2228,7 +2228,11 @@ namespace OpenSim.Region.Framework.Scenes
2228 dupe.LocalId = plocalID; 2228 dupe.LocalId = plocalID;
2229 2229
2230 // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated. 2230 // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated.
2231 dupe.LastOwnerID = OwnerID; 2231 if(OwnerID != GroupID)
2232 dupe.LastOwnerID = OwnerID;
2233 else
2234 dupe.LastOwnerID = LastOwnerID; // redundant ?
2235
2232 dupe.RezzerID = RezzerID; 2236 dupe.RezzerID = RezzerID;
2233 2237
2234 byte[] extraP = new byte[Shape.ExtraParams.Length]; 2238 byte[] extraP = new byte[Shape.ExtraParams.Length];
@@ -5246,7 +5250,8 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
5246 5250
5247 //LogPermissions("After ApplyNextOwnerPermissions"); 5251 //LogPermissions("After ApplyNextOwnerPermissions");
5248 5252
5249 LastOwnerID = OwnerID; 5253 if(OwnerID != GroupID)
5254 LastOwnerID = OwnerID;
5250 OwnerID = item.Owner; 5255 OwnerID = item.Owner;
5251 Inventory.ChangeInventoryOwner(item.Owner); 5256 Inventory.ChangeInventoryOwner(item.Owner);
5252 } 5257 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index a55936f..4dd8eb1 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -965,7 +965,8 @@ namespace OpenSim.Region.Framework.Scenes
965 { 965 {
966 if ((part.OwnerID != item.OwnerID) || (item.CurrentPermissions & (uint)PermissionMask.Slam) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) 966 if ((part.OwnerID != item.OwnerID) || (item.CurrentPermissions & (uint)PermissionMask.Slam) != 0 || (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0)
967 { 967 {
968 part.LastOwnerID = part.OwnerID; 968 if(part.GroupID != part.OwnerID)
969 part.LastOwnerID = part.OwnerID;
969 part.OwnerID = item.OwnerID; 970 part.OwnerID = item.OwnerID;
970 part.Inventory.ChangeInventoryOwner(item.OwnerID); 971 part.Inventory.ChangeInventoryOwner(item.OwnerID);
971 } 972 }