diff options
author | Maxim Nikolenko <maximnproductengine@lindenlab.com> | 2023-06-12 16:10:28 +0300 |
---|---|---|
committer | Maxim Nikolenko <maximnproductengine@lindenlab.com> | 2023-06-12 16:10:28 +0300 |
commit | 929f9d8d5f2e7895016648557fa60c9d4a84baf6 (patch) | |
tree | c56628f2b391f7a313613f60dcfaf60915e31039 | |
parent | 14aa4dcdc23feafc537f06e49c48e9d693300103 (diff) |
SL-19825 clear selection when right-clicking outside of selected items
-rw-r--r-- | indra/llui/llfolderview.cpp | 10 | ||||
-rw-r--r-- | indra/newview/llavataractions.cpp | 25 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.cpp | 10 |
3 files changed, 32 insertions, 13 deletions
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index 8660048058..7e5a9efb37 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -1471,6 +1471,16 @@ BOOL LLFolderView::handleRightMouseDown( S32 x, S32 y, MASK mask ) mCallbackRegistrar->popScope(); } } + + bool item_clicked = false; + for (selected_items_t::iterator item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it) + { + item_clicked |= (*item_it)->getRect().pointInRect(x, y); + } + if(!item_clicked && mSingleFolderMode) + { + clearSelection(); + } bool hide_folder_menu = mSuppressFolderMenu && isFolderSelected(); if (menu && (mSingleFolderMode || (handled && ( count > 0 && (hasVisibleChildren()) ))) && // show menu only if selected items are visible diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 6bd2b8bbee..313339f131 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -765,8 +765,18 @@ namespace action_give_inventory static bool is_give_inventory_acceptable(LLInventoryPanel* panel = NULL) { // check selection in the panel - const std::set<LLUUID> inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(panel); - if (inventory_selected_uuids.empty()) return false; // nothing selected + std::set<LLUUID> inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(panel); + if (inventory_selected_uuids.empty()) + { + if(panel && panel->getRootFolder() && panel->getRootFolder()->isSingleFolderMode()) + { + inventory_selected_uuids.insert(panel->getRootFolderID()); + } + else + { + return false; // nothing selected + } + } return is_give_inventory_acceptable_ids(inventory_selected_uuids); } @@ -940,11 +950,18 @@ namespace action_give_inventory static void give_inventory(const uuid_vec_t& avatar_uuids, const std::vector<LLAvatarName> avatar_names, LLInventoryPanel* panel = NULL) { llassert(avatar_names.size() == avatar_uuids.size()); + std::set<LLUUID> inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(panel);; - const std::set<LLUUID> inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(panel); if (inventory_selected_uuids.empty()) { - return; + if(panel && panel->getRootFolder() && panel->getRootFolder()->isSingleFolderMode()) + { + inventory_selected_uuids.insert(panel->getRootFolderID()); + } + else + { + return; + } } give_inventory_ids(avatar_uuids, avatar_names, inventory_selected_uuids); } diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 53753b6c6b..067758b99c 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -2304,15 +2304,7 @@ void LLInventorySingleFolderPanel::doCreate(const LLSD& userdata) void LLInventorySingleFolderPanel::doShare() { - if(mFolderRoot.get()->getCurSelectedItem() == NULL) - { - std::set<LLUUID> uuids{mFolderID}; - LLAvatarActions::shareWithAvatars(uuids, gFloaterView->getParentFloater(this)); - } - else - { - LLAvatarActions::shareWithAvatars(this); - } + LLAvatarActions::shareWithAvatars(this); } /************************************************************************/ /* Asset Pre-Filtered Inventory Panel related class */ |