diff options
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | 27 |
1 files 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 | |||
748 | } | 748 | } |
749 | } | 749 | } |
750 | 750 | ||
751 | // Override and put into where it came from, if it came | 751 | if (action == DeRezAction.TakeCopy) |
752 | // from anywhere in inventory and the owner is taking it back. | 752 | folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); |
753 | // | 753 | else if (action == DeRezAction.Take) |
754 | if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) | ||
755 | { | 754 | { |
755 | // Override and put into where it came from, if it came | ||
756 | // from anywhere in inventory and the owner is taking it back. | ||
756 | if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId) | 757 | if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId) |
757 | { | 758 | { |
758 | folder = m_Scene.InventoryService.GetFolder(userID, so.FromFolderID); | 759 | folder = m_Scene.InventoryService.GetFolder(userID, so.FromFolderID); |
759 | 760 | ||
760 | if(folder.Type == (int)FolderType.Trash || folder.Type == (int)FolderType.LostAndFound) | 761 | if(folder == null || folder.Type == (int)FolderType.Trash || folder.Type == (int)FolderType.LostAndFound) |
761 | { | 762 | { |
762 | // folder.Type = 6; | ||
763 | folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); | 763 | folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); |
764 | } | 764 | } |
765 | else | ||
766 | { | ||
767 | InventoryFolderBase parent = folder; | ||
768 | while(true) | ||
769 | { | ||
770 | parent = m_Scene.InventoryService.GetFolder(userID, parent.ParentID); | ||
771 | if (parent != null && parent.ParentID == UUID.Zero) | ||
772 | break; | ||
773 | if (parent == null || parent.Type == (int)FolderType.Trash || parent.Type == (int)FolderType.LostAndFound) | ||
774 | { | ||
775 | folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); | ||
776 | break; | ||
777 | } | ||
778 | } | ||
779 | } | ||
765 | } | 780 | } |
766 | } | 781 | } |
767 | 782 | ||