From 62977173999e4dc31750c7c8593cf5bf806ea952 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 10 Dec 2018 06:23:38 +0000 Subject: mantis 8419: TakeCopy now sends to objects; Take to a child of trash or lostandfound also, else goes to original folder --- .../InventoryAccess/InventoryAccessModule.cs | 27 +++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 4a3e65e..d6c65a1 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -748,20 +748,35 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } } - // Override and put into where it came from, if it came - // from anywhere in inventory and the owner is taking it back. - // - if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) + if (action == DeRezAction.TakeCopy) + folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); + else if (action == DeRezAction.Take) { + // Override and put into where it came from, if it came + // from anywhere in inventory and the owner is taking it back. if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId) { folder = m_Scene.InventoryService.GetFolder(userID, so.FromFolderID); - if(folder.Type == (int)FolderType.Trash || folder.Type == (int)FolderType.LostAndFound) + if(folder == null || folder.Type == (int)FolderType.Trash || folder.Type == (int)FolderType.LostAndFound) { - // folder.Type = 6; folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); } + else + { + InventoryFolderBase parent = folder; + while(true) + { + parent = m_Scene.InventoryService.GetFolder(userID, parent.ParentID); + if (parent != null && parent.ParentID == UUID.Zero) + break; + if (parent == null || parent.Type == (int)FolderType.Trash || parent.Type == (int)FolderType.LostAndFound) + { + folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); + break; + } + } + } } } -- cgit v1.1