summaryrefslogtreecommitdiff
path: root/indra/newview/llviewermenu.cpp
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2026-08-13 09:03:27 -0700
committerGitHub <noreply@github.com>2026-08-13 09:03:27 -0700
commitc8730531ee1a030c4e71f2b7ddb7d3394c9af7b7 (patch)
treebfbdb7e46233b91581db5b8ead7b4ac9a9c4e111 /indra/newview/llviewermenu.cpp
parent21bb60fc65e7fa6c3cf472a29cda220f653af1d8 (diff)
parent222f568123c0ac9b6e4ed7be0dae020c8cb3f832 (diff)
Merge pull request #6104 from secondlife/rider/explore_selection
Rider/explore selection
Diffstat (limited to 'indra/newview/llviewermenu.cpp')
-rw-r--r--indra/newview/llviewermenu.cpp34
1 files changed, 31 insertions, 3 deletions
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index dc509479c4..eaaa923b59 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5136,6 +5136,31 @@ static void derez_objects(EDeRezDestination dest, const LLUUID& dest_id)
derez_objects(dest, dest_id, first_region, error, NULL);
}
+bool save_object_back_to_contents(LLViewerObject* object, const LLUUID& source_task_id)
+{
+ if (!object || source_task_id.isNull())
+ {
+ return false;
+ }
+
+ LLViewerRegion* first_region = object->getRegion();
+ if (!first_region)
+ {
+ return false;
+ }
+
+ std::vector<LLViewerObjectPtr> objects;
+ objects.push_back(object);
+
+ std::string error;
+ derez_objects(DRD_SAVE_INTO_TASK_INVENTORY, source_task_id, first_region, error, &objects);
+ if (!error.empty())
+ {
+ return false;
+ }
+ return true;
+}
+
static void derez_objects_separate(EDeRezDestination dest, const LLUUID &dest_id)
{
std::vector<LLViewerObjectPtr> derez_object_list;
@@ -5710,10 +5735,13 @@ class LLToolsSaveToObjectInventory : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode();
- if(node && (node->mValid) && (!node->mFromTaskID.isNull()))
+ if (node && node->mValid && !node->mFromTaskID.isNull())
{
- // *TODO: check to see if the fromtaskid object exists.
- derez_objects(DRD_SAVE_INTO_TASK_INVENTORY, node->mFromTaskID);
+ LLViewerObject* object = node->getObject();
+ if (object)
+ {
+ save_object_back_to_contents(object, node->mFromTaskID);
+ }
}
return true;
}