diff options
| author | Maxim Nikolenko <maximnproductengine@lindenlab.com> | 2023-05-05 18:17:00 +0300 | 
|---|---|---|
| committer | Maxim Nikolenko <maximnproductengine@lindenlab.com> | 2023-05-05 18:17:00 +0300 | 
| commit | 61818417d619c8d17cf861f0d72b314a14269e2f (patch) | |
| tree | c8f162d81791c621e38d40cebf50275933837d4b /indra | |
| parent | 98681ef73ff33e0c0ff321e839a8e79b2cb334de (diff) | |
SL-19641 FIXED Gallery item is not selected after using 'Find original'
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinventorygallery.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llinventorygallery.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelmaininventory.cpp | 70 | ||||
| -rw-r--r-- | indra/newview/llpanelmaininventory.h | 7 | 
4 files changed, 76 insertions, 7 deletions
| diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index a078d6c81d..37801c8dd5 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -882,6 +882,11 @@ void LLInventoryGallery::scrollToShowItem(const LLUUID& item_id)      }  } +LLInventoryGalleryItem* LLInventoryGallery::getSelectedItem() +{ +    return mItemMap[mSelectedItemID]; +} +  void LLInventoryGallery::updateMessageVisibility()  { diff --git a/indra/newview/llinventorygallery.h b/indra/newview/llinventorygallery.h index 2cf038b7d8..dfb7be6a86 100644 --- a/indra/newview/llinventorygallery.h +++ b/indra/newview/llinventorygallery.h @@ -129,6 +129,7 @@ public:      bool hasVisibleItems();      void handleModifiedFilter();      LLScrollContainer* getScrollableContainer() { return mScrollPanel; } +    LLInventoryGalleryItem* getSelectedItem();  protected: diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index b0422b7bd9..2f6276ff77 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -122,7 +122,9 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)        mViewMode(MODE_COMBINATION),        mCombinationShapeDirty(true),        mListViewRootUpdatedConnection(), -      mGalleryRootUpdatedConnection() +      mGalleryRootUpdatedConnection(), +      mDelayedCombGalleryScroll(false), +      mDelayedCombInvPanelScroll(false)  {  	// Menu Callbacks (non contex menus)  	mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelMainInventory::doToSelected, this, _2)); @@ -466,7 +468,7 @@ void LLPanelMainInventory::newFolderWindow(LLUUID folder_id, LLUUID item_to_sele                      main_inventory->setFocus(true);                      if(item_to_select.notNull())                      { -                        sidepanel_inventory->getActivePanel()->setSelection(item_to_select, TAKE_FOCUS_YES); +                        main_inventory->setGallerySelection(item_to_select);                      }                      return;                  } @@ -491,7 +493,7 @@ void LLPanelMainInventory::newFolderWindow(LLUUID folder_id, LLUUID item_to_sele                      main_inventory->setSingleFolderViewRoot(folder_id);                      if(item_to_select.notNull())                      { -                        sidepanel_inventory->getActivePanel()->setSelection(item_to_select, TAKE_FOCUS_YES); +                        main_inventory->setGallerySelection(item_to_select, true);                      }                  }              } @@ -2345,6 +2347,15 @@ void LLPanelMainInventory::updateCombinationVisibility()          mCombinationScroller->reshape(desired_width, inv_rect.getHeight() + galery_rect.getHeight(), true);          mCombinationGalleryPanel->setShape(galery_rect, false);          mCombinationInventoryPanel->setShape(inv_rect, false); + +        if(mDelayedCombGalleryScroll) +        { +            scrollToGallerySelection(); +        } +        else if(mDelayedCombInvPanelScroll) +        { +            scrollToInvPanelSelection(); +        }      }  } @@ -2478,7 +2489,7 @@ LLInventoryFilter& LLPanelMainInventory::getCurrentFilter()      }  } -void LLPanelMainInventory::setGallerySelection(const LLUUID& item_id) +void LLPanelMainInventory::setGallerySelection(const LLUUID& item_id, bool new_window)  {      if(mSingleFolderMode && isGalleryViewMode())      { @@ -2488,13 +2499,60 @@ void LLPanelMainInventory::setGallerySelection(const LLUUID& item_id)      {          if(mCombinationGalleryPanel->getFilter().checkAgainstFilterThumbnails(item_id))          { -            mCombinationGalleryPanel->changeItemSelection(item_id, true); +            mCombinationGalleryPanel->changeItemSelection(item_id, false); +            if(new_window) +            { +                mDelayedCombGalleryScroll = new_window; +            } +            else +            { +                scrollToGallerySelection(); +            }          }          else          { -            mCombinationInventoryPanel->setSelection(item_id, false); +            mCombinationInventoryPanel->setSelection(item_id, true); +            if(new_window) +            { +                mDelayedCombInvPanelScroll = new_window; +            } +            else +            { +                scrollToInvPanelSelection(); +            }          }      } +    else if (mSingleFolderMode && isListViewMode()) +    { +        mSingleFolderPanelInventory->setSelection(item_id, true); +    } +} + +void LLPanelMainInventory::scrollToGallerySelection() +{ +    LLInventoryGalleryItem* item = mCombinationGalleryPanel->getSelectedItem(); +    LLScrollContainer* scroll_panel = getChild<LLScrollContainer>("combination_view_inventory"); + +    if(item) +    { +        LLRect item_rect; +        item->localRectToOtherView(item->getLocalRect(), &item_rect, mCombinationScroller); +        scroll_panel->scrollToShowRect(item_rect); +    }  } + +void LLPanelMainInventory::scrollToInvPanelSelection() +{ +    LLFolderViewItem* item = mCombinationInventoryPanel->getRootFolder()->getCurSelectedItem(); +    LLScrollContainer* scroll_panel = getChild<LLScrollContainer>("combination_view_inventory"); + +    if(item) +    { +        LLRect item_rect; +        item->localRectToOtherView(item->getLocalRect(), &item_rect, mCombinationScroller); +        scroll_panel->scrollToShowRect(item_rect); +    } +} +  // List Commands                                                              //  //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index 21e08bbac8..44beba6b4f 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -120,10 +120,13 @@ public:      void onBackFolderClicked();      void onForwardFolderClicked();      void setSingleFolderViewRoot(const LLUUID& folder_id, bool clear_nav_history = true); -    void setGallerySelection(const LLUUID& item_id); +    void setGallerySelection(const LLUUID& item_id, bool new_window = false);      LLUUID getSingleFolderViewRoot();      bool isSingleFolderMode() { return mSingleFolderMode; } +    void scrollToGallerySelection(); +    void scrollToInvPanelSelection(); +      void setViewMode(EViewModeType mode);      bool isListViewMode() { return (mViewMode == MODE_LIST); }      bool isGalleryViewMode() { return (mViewMode == MODE_GALLERY); } @@ -236,6 +239,8 @@ private:      bool                        mForceShowInvLayout;      bool                        mCombinationShapeDirty; +    bool                        mDelayedCombGalleryScroll; +    bool                        mDelayedCombInvPanelScroll;  	// List Commands                                                              //  	////////////////////////////////////////////////////////////////////////////////  }; | 
