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;
|
BOOL mNoCopyTextureSelected;
|
||||||
F32 mContextConeOpacity;
|
F32 mContextConeOpacity;
|
||||||
LLSaveFolderState mSavedFolderState;
|
LLSaveFolderState mSavedFolderState;
|
||||||
|
BOOL mSelectedItemPinned;
|
||||||
LLScrollListCtrl* mLocalScrollCtrl; // tag: vaa emerald local_asset_browser
|
LLScrollListCtrl* mLocalScrollCtrl; // tag: vaa emerald local_asset_browser
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -249,7 +250,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
|
|||||||
mSearchEdit(NULL),
|
mSearchEdit(NULL),
|
||||||
mImmediateFilterPermMask(immediate_filter_perm_mask),
|
mImmediateFilterPermMask(immediate_filter_perm_mask),
|
||||||
mNonImmediateFilterPermMask(non_immediate_filter_perm_mask),
|
mNonImmediateFilterPermMask(non_immediate_filter_perm_mask),
|
||||||
mContextConeOpacity(0.f)
|
mContextConeOpacity(0.f),
|
||||||
|
mSelectedItemPinned(FALSE)
|
||||||
{
|
{
|
||||||
mCanApplyImmediately = can_apply_immediately;
|
mCanApplyImmediately = can_apply_immediately;
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_texture_ctrl.xml");
|
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_texture_ctrl.xml");
|
||||||
@@ -506,8 +508,13 @@ BOOL LLFloaterTexturePicker::postBuild()
|
|||||||
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
|
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
|
||||||
mInventoryPanel->setAllowMultiSelect(FALSE);
|
mInventoryPanel->setAllowMultiSelect(FALSE);
|
||||||
|
|
||||||
// store this filter as the default one
|
// Disable auto selecting first filtered item because it takes away
|
||||||
mInventoryPanel->getRootFolder()->getFilter()->markDefault();
|
// 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
|
// Commented out to stop opening all folders with textures
|
||||||
// mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_TEXTURE);
|
// mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_TEXTURE);
|
||||||
@@ -675,6 +682,31 @@ void LLFloaterTexturePicker::draw()
|
|||||||
// Draw X
|
// Draw X
|
||||||
gl_draw_x(interior, LLColor4::black );
|
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