SL-13119 Made control settings cached and fixed potential filtering issue
parent
d70b749101
commit
59433e3132
|
|
@ -342,7 +342,9 @@ static LLTrace::BlockTimerStatHandle FTM_FILTER("Filter Folder View");
|
|||
void LLFolderView::filter( LLFolderViewFilter& filter )
|
||||
{
|
||||
LL_RECORD_BLOCK_TIME(FTM_FILTER);
|
||||
filter.resetTime(llclamp(LLUI::getInstance()->mSettingGroups["config"]->getS32(mParentPanel.get()->getVisible() ? "FilterItemsMaxTimePerFrameVisible" : "FilterItemsMaxTimePerFrameUnvisible"), 1, 100));
|
||||
static LLCachedControl<S32> filter_visible(*LLUI::getInstance()->mSettingGroups["config"], "FilterItemsMaxTimePerFrameVisible", 10);
|
||||
static LLCachedControl<S32> filter_hidden(*LLUI::getInstance()->mSettingGroups["config"], "FilterItemsMaxTimePerFrameUnvisible", 1);
|
||||
filter.resetTime(llclamp(mParentPanel.get()->getVisible() ? filter_visible() : filter_hidden(), 1, 100));
|
||||
|
||||
// Note: we filter the model, not the view
|
||||
getViewModelItem()->filter(filter);
|
||||
|
|
|
|||
|
|
@ -183,10 +183,13 @@ LLFolderViewItem::~LLFolderViewItem()
|
|||
BOOL LLFolderViewItem::postBuild()
|
||||
{
|
||||
LLFolderViewModelItem& vmi = *getViewModelItem();
|
||||
mLabel = vmi.getDisplayName(); // slightly expensive, but only first time
|
||||
// getDisplayName() is slightly expensive and requires a filter reset
|
||||
mLabel = vmi.getDisplayName();
|
||||
setToolTip(vmi.getName());
|
||||
|
||||
// Dirty the filter flag of the model from the view (CHUI-849)
|
||||
vmi.dirtyFilter();
|
||||
|
||||
mLabelNeedsRefresh = true;
|
||||
mLabelWidthDirty = true;
|
||||
return TRUE;
|
||||
|
|
@ -288,10 +291,6 @@ void LLFolderViewItem::refresh()
|
|||
{
|
||||
LLFolderViewModelItem& vmi = *getViewModelItem();
|
||||
|
||||
// getDisplayName() is slightly expensive on first run
|
||||
mLabel = vmi.getDisplayName();
|
||||
setToolTip(vmi.getName());
|
||||
|
||||
// icons are slightly expensive to get, can be optimized
|
||||
// see LLInventoryIcon::getIcon()
|
||||
mIcon = vmi.getIcon();
|
||||
|
|
@ -306,8 +305,6 @@ void LLFolderViewItem::refresh()
|
|||
mLabelSuffix = vmi.getLabelSuffix();
|
||||
}
|
||||
|
||||
// Dirty the filter flag of the model from the view (CHUI-849)
|
||||
vmi.dirtyFilter();
|
||||
mLabelWidthDirty = true;
|
||||
mLabelNeedsRefresh = false;
|
||||
}
|
||||
|
|
@ -362,6 +359,8 @@ S32 LLFolderViewItem::arrange( S32* width, S32* height )
|
|||
{
|
||||
if (mLabelNeedsRefresh)
|
||||
{
|
||||
// Expensive. But despite refreshing label,
|
||||
// it is purely visual, so it is fine to do at our laisure
|
||||
refresh();
|
||||
}
|
||||
mLabelWidth = getLabelXPos() + getLabelFontForStyle(mLabelStyle)->getWidth(mLabel) + getLabelFontForStyle(mLabelStyle)->getWidth(mLabelSuffix) + mLabelPaddingRight;
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ public:
|
|||
virtual BOOL isPotentiallyVisible(S32 filter_generation = -1);
|
||||
|
||||
// refresh information from the object being viewed.
|
||||
// refreshes, label, sufixes and sets icons. Expensive!
|
||||
// refreshes sufixes and sets icons. Expensive!
|
||||
virtual void refresh();
|
||||
|
||||
// LLView functionality
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ std::string LLFolderViewModelCommon::getStatusText()
|
|||
|
||||
void LLFolderViewModelCommon::filter()
|
||||
{
|
||||
getFilter().resetTime(llclamp(LLUI::getInstance()->mSettingGroups["config"]->getS32("FilterItemsMaxTimePerFrameVisible"), 1, 100));
|
||||
static LLCachedControl<S32> filter_visible(*LLUI::getInstance()->mSettingGroups["config"], "FilterItemsMaxTimePerFrameVisible", 10);
|
||||
getFilter().resetTime(llclamp(filter_visible(), 1, 100));
|
||||
mFolderView->getViewModelItem()->filter(getFilter());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -430,7 +430,11 @@ void LLConversationViewSession::refresh()
|
|||
// Refresh the session view from its model data
|
||||
LLConversationItem* vmi = dynamic_cast<LLConversationItem*>(getViewModelItem());
|
||||
vmi->resetRefresh();
|
||||
|
||||
|
||||
mLabel = vmi->getDisplayName(); // needs a filter reset
|
||||
setToolTip(vmi->getName());
|
||||
vmi->dirtyFilter();
|
||||
|
||||
if (mSessionTitle)
|
||||
{
|
||||
mSessionTitle->setText(vmi->getDisplayName());
|
||||
|
|
@ -621,7 +625,11 @@ void LLConversationViewParticipant::refresh()
|
|||
|
||||
// *TODO: We should also do something with vmi->isModerator() to echo that state in the UI somewhat
|
||||
mSpeakingIndicator->setIsModeratorMuted(participant_model->isModeratorMuted());
|
||||
|
||||
|
||||
mLabel = participant_model->getDisplayName(); // needs a filter reset
|
||||
setToolTip(participant_model->getName());
|
||||
participant_model->dirtyFilter();
|
||||
|
||||
// Do the regular upstream refresh
|
||||
LLFolderViewItem::refresh();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue