Scroll to the object's texture if the user has a copy in their inventory. EXT-5403? Fixes part of Issue 501.
This commit is contained in:
@@ -217,6 +217,7 @@ protected:
|
||||
BOOL mNoCopyTextureSelected;
|
||||
F32 mContextConeOpacity;
|
||||
LLSaveFolderState mSavedFolderState;
|
||||
BOOL mSelectedItemPinned;
|
||||
LLScrollListCtrl* mLocalScrollCtrl; // tag: vaa emerald local_asset_browser
|
||||
};
|
||||
|
||||
@@ -249,7 +250,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
|
||||
mSearchEdit(NULL),
|
||||
mImmediateFilterPermMask(immediate_filter_perm_mask),
|
||||
mNonImmediateFilterPermMask(non_immediate_filter_perm_mask),
|
||||
mContextConeOpacity(0.f)
|
||||
mContextConeOpacity(0.f),
|
||||
mSelectedItemPinned(FALSE)
|
||||
{
|
||||
mCanApplyImmediately = can_apply_immediately;
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_texture_ctrl.xml");
|
||||
@@ -506,8 +508,13 @@ BOOL LLFloaterTexturePicker::postBuild()
|
||||
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
|
||||
mInventoryPanel->setAllowMultiSelect(FALSE);
|
||||
|
||||
// store this filter as the default one
|
||||
mInventoryPanel->getRootFolder()->getFilter()->markDefault();
|
||||
// Disable auto selecting first filtered item because it takes away
|
||||
// selection from the item set by LLTextureCtrl owning this floater.
|
||||
mInventoryPanel->getRootFolder()->setAutoSelectOverride(TRUE);
|
||||
|
||||
// Commented out to scroll to currently selected texture. See EXT-5403.
|
||||
// // store this filter as the default one
|
||||
// mInventoryPanel->getRootFolder()->getFilter()->markDefault();
|
||||
|
||||
// Commented out to stop opening all folders with textures
|
||||
// mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_TEXTURE);
|
||||
@@ -675,6 +682,31 @@ void LLFloaterTexturePicker::draw()
|
||||
// Draw X
|
||||
gl_draw_x(interior, LLColor4::black );
|
||||
}
|
||||
|
||||
if (mSelectedItemPinned) return;
|
||||
|
||||
LLFolderView* folder_view = mInventoryPanel->getRootFolder();
|
||||
if (!folder_view) return;
|
||||
|
||||
LLInventoryFilter* filter = folder_view->getFilter();
|
||||
if (!filter) return;
|
||||
|
||||
bool is_filter_active = folder_view->getCompletedFilterGeneration() < filter->getCurrentGeneration() &&
|
||||
filter->isNotDefault();
|
||||
|
||||
// After inventory panel filter is applied we have to update
|
||||
// constraint rect for the selected item because of folder view
|
||||
// AutoSelectOverride set to TRUE. We force PinningSelectedItem
|
||||
// flag to FALSE state and setting filter "dirty" to update
|
||||
// scroll container to show selected item (see LLFolderView::doIdle()).
|
||||
if (!is_filter_active && !mSelectedItemPinned)
|
||||
{
|
||||
folder_view->setPinningSelectedItem(mSelectedItemPinned);
|
||||
folder_view->dirtyFilter();
|
||||
folder_view->arrangeFromRoot();
|
||||
|
||||
mSelectedItemPinned = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user