From 6ef4f1bdae63d156f2dfad9a440ba52a9b84dc85 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Thu, 3 Apr 2008 13:33:46 +0000
Subject: * Resolve mantis 849 * Scripts in prims within linksets can now be
 properly edited using the 'edit linked parts' linden ui option

---
 OpenSim/Region/ClientStack/ClientView.cs                       | 2 +-
 OpenSim/Region/Environment/Scenes/InnerScene.cs                | 9 +++++++--
 OpenSim/Region/Environment/Scenes/Scene.Inventory.cs           | 2 +-
 OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs      | 5 ++---
 OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs | 2 +-
 OpenSim/Region/Environment/Scenes/SceneObjectPart.cs           | 9 ++++++++-
 6 files changed, 20 insertions(+), 9 deletions(-)

(limited to 'OpenSim/Region')

diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs
index 3b7923e..e4f28db 100644
--- a/OpenSim/Region/ClientStack/ClientView.cs
+++ b/OpenSim/Region/ClientStack/ClientView.cs
@@ -3356,7 +3356,7 @@ namespace OpenSim.Region.ClientStack
                         handlerLinkObjects = OnLinkObjects;
                         if (handlerLinkObjects != null)
                         {
-                            handlerLinkObjects(parentprimid, childrenprims);
+                            handlerLinkObjects(this, parentprimid, childrenprims);
                         }
                         break;
                     case PacketType.ObjectDelink:
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index c009593..9a720d9 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -1081,11 +1081,12 @@ namespace OpenSim.Region.Environment.Scenes
         }
 
         /// <summary>
-        /// 
+        /// Initial method invoked when we receive a link objects request from the client.
         /// </summary>
+        /// <param name="client"></param>
         /// <param name="parentPrim"></param>
         /// <param name="childPrims"></param>
-        public void LinkObjects(uint parentPrim, List<uint> childPrims)
+        public void LinkObjects(IClientAPI client, uint parentPrim, List<uint> childPrims)
         {
             List<EntityBase> EntityList = GetEntities();
 
@@ -1124,6 +1125,10 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 parenPrim.LinkToGroup(sceneObj);
             }
+            
+            // We need to explicitly resend the newly link prim's object properties since no other actions
+            // occur on link to invoke this elsewhere (such as object selection)
+            parenPrim.GetProperties(client);
         }
 
         /// <summary>
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index ca17937..2b8f344 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -547,7 +547,7 @@ namespace OpenSim.Region.Environment.Scenes
         /// <param name="remoteClient"></param>
         /// <param name="primLocalID"></param>
         public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID)
-        {
+        {    
             SceneObjectGroup group = GetGroupByPrim(primLocalID);
             if (group != null)
             {
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
index 869c936..ebdb0a6 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
@@ -69,7 +69,7 @@ namespace OpenSim.Region.Environment.Scenes
         }
 
         /// <summary>
-        /// 
+        /// Invoked when the client selects a prim.
         /// </summary>
         /// <param name="primLocalID"></param>
         /// <param name="remoteClient"></param>
@@ -80,8 +80,7 @@ namespace OpenSim.Region.Environment.Scenes
             foreach (EntityBase ent in EntitieList)
             {
                 if (ent is SceneObjectGroup)
-                {
-                    
+                {                    
                     if (((SceneObjectGroup) ent).LocalId == primLocalID)
                     {
                         // A prim is only tainted if it's allowed to be edited by the person clicking it.
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
index a73bb76..0879357 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
@@ -399,7 +399,7 @@ namespace OpenSim.Region.Environment.Scenes
         /// <param name="client"></param>
         /// <param name="localID"></param>
         public bool GetInventoryFileName(IClientAPI client, uint localID)
-        {
+        {                        
             if (m_inventorySerial > 0)
             {
                 client.SendTaskInventory(m_uuid, (short)m_inventorySerial,
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 5e49314..b42375f 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -2150,9 +2150,10 @@ namespace OpenSim.Region.Environment.Scenes
         }
 
         /// <summary>
-        /// 
+        /// Sends a full update to the client
         /// </summary>
         /// <param name="remoteClient"></param>
+        /// <param name="clientFlags"></param>
         public void SendFullUpdateToClient(IClientAPI remoteClient, uint clientflags)
         {
             LLVector3 lPos;
@@ -2160,6 +2161,12 @@ namespace OpenSim.Region.Environment.Scenes
             SendFullUpdateToClient(remoteClient, lPos, clientflags);
         }
    
+        /// <summary>
+        /// Sends a full update to the client
+        /// </summary>
+        /// <param name="remoteClient"></param>
+        /// <param name="lPos"></param>
+        /// <param name="clientFlags"></param>
         public void SendFullUpdateToClient(IClientAPI remoteClient, LLVector3 lPos, uint clientFlags)
         {
             LLQuaternion lRot;
-- 
cgit v1.1