FIRE-22710: Use timer and a 0.2s delay when touching multiple objects in area search

master
Ansariel 2018-06-30 18:28:13 +02:00
parent 9052832573
commit 1f530d9877
2 changed files with 29 additions and 6 deletions

View File

@ -98,6 +98,30 @@ private:
FSAreaSearch* mAreaSearchFloater;
};
class FSAreaSearchTouchTimer : public LLEventTimer
{
public:
FSAreaSearchTouchTimer(const LLUUID& object_id, F32 timeout) :
LLEventTimer(timeout),
mObjectID(object_id)
{
}
/*virtual*/ BOOL tick()
{
LLViewerObject* objectp = gObjectList.findObject(mObjectID);
if (objectp)
{
FSPanelAreaSearchList::touchObject(objectp);
}
return TRUE;
}
private:
LLUUID mObjectID;
};
FSAreaSearch::FSAreaSearch(const LLSD& key) :
LLFloater(key),
mActive(false),
@ -1615,6 +1639,7 @@ bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata)
case 'l': // blacklist
{
std::vector<LLScrollListItem*> selected = mResultList->getAllSelected();
S32 cnt = 0;
for(std::vector<LLScrollListItem*>::iterator item_it = selected.begin();
item_it != selected.end(); ++item_it)
@ -1623,11 +1648,8 @@ bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata)
{
case 't': // touch
{
LLViewerObject* objectp = gObjectList.findObject((*item_it)->getUUID());
if (objectp)
{
touchObject(objectp);
}
new FSAreaSearchTouchTimer((*item_it)->getUUID(), cnt * 0.2f);
cnt++;
}
break;
case 's': // script
@ -1877,6 +1899,7 @@ bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata)
return true;
}
// static
void FSPanelAreaSearchList::touchObject(LLViewerObject* objectp)
{
// *NOTE: Hope the packets arrive safely and in order or else

View File

@ -286,7 +286,7 @@ public:
void setCounterText(LLStringUtil::format_map_t args);
void updateScrollList();
void updateName(LLUUID id, std::string name);
void touchObject(LLViewerObject* objectp);
static void touchObject(LLViewerObject* objectp);
FSScrollListCtrl* getResultList() { return mResultList; }
void updateResultListColumns();