diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-09-14 23:59:58 +0300 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-09-15 00:01:58 +0300 |
commit | 76c6dc025d39adba54cff2c112337274efaddd10 (patch) | |
tree | a0e5b3e09fcad5375fa437b5be43fd19eaf38205 | |
parent | 28e6ce451c3d01333a805f11286dacc9f3157c54 (diff) |
SL-19826 Gallery multiselect support, fix right click
-rw-r--r-- | indra/newview/llinventorygallery.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index 1ee08eb01c..4838ba7a47 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -1012,20 +1012,16 @@ BOOL LLInventoryGallery::handleRightMouseDown(S32 x, S32 y, MASK mask) { if (mSelectedItemIDs.size() > 0) { - selection_deque::iterator iter = mSelectedItemIDs.begin(); - if (mItemMap[*iter]) - { - mItemMap[*iter]->setFocus(false); - setFocus(true); - } + setFocus(true); } - clearSelection(); + mLastInteractedUUID = LLUUID::null; // Scroll is going to always return true BOOL res = LLPanel::handleRightMouseDown(x, y, mask); - if (mSelectedItemIDs.empty()) + if (mLastInteractedUUID.isNull()) // no child were hit { + clearSelection(); if (mInventoryGalleryMenu && mFolderID.notNull()) { uuid_vec_t selected_uuids; @@ -1487,6 +1483,7 @@ void LLInventoryGallery::changeItemSelection(const LLUUID& item_id, bool scroll_ && std::find(mSelectedItemIDs.begin(), mSelectedItemIDs.end(), item_id) != mSelectedItemIDs.end()) { // Already selected + mLastInteractedUUID = item_id; return; } @@ -1514,6 +1511,7 @@ void LLInventoryGallery::addItemSelection(const LLUUID& item_id, bool scroll_to_ if (std::find(mSelectedItemIDs.begin(), mSelectedItemIDs.end(), item_id) != mSelectedItemIDs.end()) { // Already selected + mLastInteractedUUID = item_id; return; } @@ -2707,7 +2705,7 @@ BOOL LLInventoryGalleryItem::handleMouseDown(S32 x, S32 y, MASK mask) { mGallery->toggleSelectionRangeFromLast(mUUID); } - else if (!isSelected()) + else { mGallery->changeItemSelection(mUUID, false); } @@ -2724,6 +2722,15 @@ BOOL LLInventoryGalleryItem::handleMouseDown(S32 x, S32 y, MASK mask) BOOL LLInventoryGalleryItem::handleRightMouseDown(S32 x, S32 y, MASK mask) { + if (!isSelected()) + { + mGallery->changeItemSelection(mUUID, false); + } + else + { + // refresh last interacted + mGallery->addItemSelection(mUUID, false); + } setFocus(TRUE); mGallery->claimEditHandler(); mGallery->showContextMenu(this, x, y, mUUID); |