From 1c371e7be6e1141114d7bddf3cad7a80314c76d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Liru=20F=C3=A6rs?= Date: Tue, 14 Jan 2020 19:35:57 -0500 Subject: [PATCH] Allow touching multiple objects in succession --- indra/newview/llviewermenu.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index c3e5010bf..cdd537752 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -9702,7 +9702,10 @@ class ListObjectTouch : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - handle_object_touch(gObjectList.findObject(LFIDBearer::getActiveSelectedID())); + for (const auto& id : LFIDBearer::getActiveSelectedIDs()) + if (auto obj = gObjectList.findObject(id)) + if (enable_object_touch(obj)) + handle_object_touch(obj); return true; } }; @@ -9712,8 +9715,16 @@ class ListObjectEnableTouch : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - const auto& ids = LFIDBearer::getActiveSelectedIDs(); - gMenuHolder->findControl(userdata["control"].asString())->setValue(ids.size() == 1 && enable_object_touch(gObjectList.findObject(ids[0]))); + bool value = false; + for (const auto& id : LFIDBearer::getActiveSelectedIDs()) + { + if (enable_object_touch(gObjectList.findObject(id))) + { + value = true; + break; // First touchable is fine enough, we'll touch all we can + } + } + gMenuHolder->findControl(userdata["control"].asString())->setValue(value); return true; } };