From 5ddd0fbdc9f1ed3ddd705a95c5fac84080337601 Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Fri, 1 Jul 2011 07:09:54 -0700 Subject: [PATCH] - fixed : "Share" doesn't remember the original inventory selection catznip hg#23179c769aec --- indra/newview/llavataractions.cpp | 66 +++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 16 deletions(-) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 9704bdb4f4..017a9171d2 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -550,13 +550,16 @@ namespace action_give_inventory /** * Checks My Inventory visibility. */ - static bool is_give_inventory_acceptable() +// static bool is_give_inventory_acceptable() +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + static bool is_give_inventory_acceptable(const uuid_set_t inventory_selected_uuids) +// [/SL:KB] { - LLInventoryPanel* active_panel = get_active_inventory_panel(); - if (!active_panel) return false; +// LLInventoryPanel* active_panel = get_active_inventory_panel(); +// if (!active_panel) return false; - // check selection in the panel - const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); +// // check selection in the panel +// const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); if (inventory_selected_uuids.empty()) return false; // nothing selected bool acceptable = false; @@ -645,10 +648,15 @@ namespace action_give_inventory return; } - LLInventoryPanel* active_panel = get_active_inventory_panel(); - if (!active_panel) return; +// LLInventoryPanel* active_panel = get_active_inventory_panel(); +// if (!active_panel) return; - const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); +// const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + uuid_set_t inventory_selected_uuids; const LLSD& sdPayload = notification["payload"]; + for (LLSD::array_const_iterator itItem = sdPayload.beginArray(); itItem != sdPayload.endArray(); ++itItem) + inventory_selected_uuids.insert(itItem->asUUID()); +// [/SL:KB] if (inventory_selected_uuids.empty()) { return; @@ -716,6 +724,16 @@ namespace action_give_inventory } } +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + static const uuid_set_t get_inventory_selection() + { + LLInventoryPanel* pInvPanel = get_active_inventory_panel(); + if (pInvPanel) + return pInvPanel->getRootFolder()->getSelectionList(); + return std::set(); + } +// [/SL:KB] + /** * Performs "give inventory" operations for provided avatars. * @@ -725,14 +743,17 @@ namespace action_give_inventory * @param avatar_names - avatar names request to be sent. * @param avatar_uuids - avatar names request to be sent. */ - static void give_inventory(const uuid_vec_t& avatar_uuids, const std::vector avatar_names) +// static void give_inventory(const uuid_vec_t& avatar_uuids, const std::vector avatar_names) +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + static void give_inventory(const uuid_vec_t& avatar_uuids, const std::vector avatar_names, const uuid_set_t inventory_selected_uuids) +// [/SL:KB] { llassert(avatar_names.size() == avatar_uuids.size()); - LLInventoryPanel* active_panel = get_active_inventory_panel(); - if (!active_panel) return; +// LLInventoryPanel* active_panel = get_active_inventory_panel(); +// if (!active_panel) return; - const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); +// const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); if (inventory_selected_uuids.empty()) { return; @@ -747,9 +768,17 @@ namespace action_give_inventory LLSD substitutions; substitutions["RESIDENTS"] = residents; substitutions["ITEMS"] = items; +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + LLSD sdPayload; + for (uuid_set_t::const_iterator itItem = inventory_selected_uuids.begin(); itItem != inventory_selected_uuids.end(); ++itItem) + sdPayload.append(*itItem); +// [/SL:KB] LLShareInfo::instance().mAvatarNames = avatar_names; LLShareInfo::instance().mAvatarUuids = avatar_uuids; - LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, LLSD(), &give_inventory_cb); +// LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, LLSD(), &give_inventory_cb); +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, sdPayload, &give_inventory_cb); +// [/SL:KB] } } @@ -758,9 +787,14 @@ void LLAvatarActions::shareWithAvatars() { using namespace action_give_inventory; - LLFloaterAvatarPicker* picker = - LLFloaterAvatarPicker::show(boost::bind(give_inventory, _1, _2), TRUE, FALSE); - picker->setOkBtnEnableCb(boost::bind(is_give_inventory_acceptable)); +// LLFloaterAvatarPicker* picker = +// LLFloaterAvatarPicker::show(boost::bind(give_inventory, _1, _2), TRUE, FALSE); +// picker->setOkBtnEnableCb(boost::bind(is_give_inventory_acceptable)); +// [SL:KB] - Patch: Inventory-ShareSelection | Checked: 2011-06-29 (Catznip-2.6.0e) | Added: Catznip-2.6.0e + const uuid_set_t idItems = get_inventory_selection(); + LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(boost::bind(give_inventory, _1, _2, idItems), TRUE, FALSE); + picker->setOkBtnEnableCb(boost::bind(is_give_inventory_acceptable, idItems)); +// [/SL:KB] picker->openFriendsTab(); LLNotificationsUtil::add("ShareNotification"); }