diff options
4 files changed, 27 insertions, 6 deletions
diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index 2837358..2a7bfb0 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs | |||
@@ -136,8 +136,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell | |||
136 | return false; | 136 | return false; |
137 | } | 137 | } |
138 | 138 | ||
139 | group.SetOwnerId(remoteClient.AgentId); | 139 | group.SetOwner(remoteClient.AgentId, remoteClient.ActiveGroupId); |
140 | group.SetRootPartOwner(part, remoteClient.AgentId, remoteClient.ActiveGroupId); | ||
141 | 140 | ||
142 | if (m_scene.Permissions.PropagatePermissions()) | 141 | if (m_scene.Permissions.PropagatePermissions()) |
143 | { | 142 | { |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 2f65ce2..602ac4b 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -2103,8 +2103,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2103 | 2103 | ||
2104 | if (original.OwnerID != AgentID) | 2104 | if (original.OwnerID != AgentID) |
2105 | { | 2105 | { |
2106 | copy.SetOwnerId(AgentID); | 2106 | copy.SetOwner(AgentID, GroupID); |
2107 | copy.SetRootPartOwner(copy.RootPart, AgentID, GroupID); | ||
2108 | 2107 | ||
2109 | SceneObjectPart[] partList = copy.Parts; | 2108 | SceneObjectPart[] partList = copy.Parts; |
2110 | 2109 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 4d1e564..924b61f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -2766,6 +2766,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
2766 | part.ScheduleFullUpdate(); | 2766 | part.ScheduleFullUpdate(); |
2767 | } | 2767 | } |
2768 | 2768 | ||
2769 | public void SetOwner(UUID cAgentID, UUID cGroupID) | ||
2770 | { | ||
2771 | SceneObjectPart rpart = RootPart; | ||
2772 | UUID oldowner = rpart.OwnerID; | ||
2773 | ForEachPart(delegate(SceneObjectPart part) | ||
2774 | { | ||
2775 | if(part.GroupID != part.OwnerID) | ||
2776 | part.LastOwnerID = part.OwnerID; | ||
2777 | part.OwnerID = cAgentID; | ||
2778 | part.GroupID = cGroupID; | ||
2779 | }); | ||
2780 | |||
2781 | if (oldowner != cAgentID) | ||
2782 | { | ||
2783 | // Apply Next Owner Permissions if we're not bypassing permissions | ||
2784 | if (!m_scene.Permissions.BypassPermissions()) | ||
2785 | ApplyNextOwnerPermissions(); | ||
2786 | } | ||
2787 | |||
2788 | rpart.ScheduleFullUpdate(); | ||
2789 | } | ||
2790 | |||
2791 | |||
2792 | |||
2769 | /// <summary> | 2793 | /// <summary> |
2770 | /// Make a copy of the given part. | 2794 | /// Make a copy of the given part. |
2771 | /// </summary> | 2795 | /// </summary> |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs index ed27385..1d5e4fb 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | |||
@@ -163,8 +163,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
163 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) | 163 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) |
164 | return 0; | 164 | return 0; |
165 | 165 | ||
166 | hostPart.ParentGroup.SetOwnerId(target.UUID); | 166 | hostPart.ParentGroup.SetOwner(target.UUID, target.ControllingClient.ActiveGroupId); |
167 | hostPart.ParentGroup.SetRootPartOwner(hostPart.ParentGroup.RootPart, target.UUID, target.ControllingClient.ActiveGroupId); | ||
168 | 167 | ||
169 | if (m_scene.Permissions.PropagatePermissions()) | 168 | if (m_scene.Permissions.PropagatePermissions()) |
170 | { | 169 | { |