PATH-292: Fixing the post-modify update handler to update the linkset list rather than overwrite it.
parent
73aa47f391
commit
05a49dd425
|
|
@ -320,7 +320,7 @@ void LLFloaterPathfindingLinksets::requestSetLinksets(LLPathfindingLinksetListPt
|
|||
llassert(!isMessagingInProgress());
|
||||
if (!isMessagingInProgress())
|
||||
{
|
||||
switch (LLPathfindingManager::getInstance()->requestSetLinksets(pLinksetList, pLinksetUse, pA, pB, pC, pD, boost::bind(&LLFloaterPathfindingLinksets::handleNewLinksets, this, _1, _2)))
|
||||
switch (LLPathfindingManager::getInstance()->requestSetLinksets(pLinksetList, pLinksetUse, pA, pB, pC, pD, boost::bind(&LLFloaterPathfindingLinksets::handleUpdateLinksets, this, _1, _2)))
|
||||
{
|
||||
case LLPathfindingManager::kLinksetsRequestStarted :
|
||||
setMessagingState(kMessagingSetRequestSent);
|
||||
|
|
@ -359,6 +359,26 @@ void LLFloaterPathfindingLinksets::handleNewLinksets(LLPathfindingManager::ELink
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingLinksets::handleUpdateLinksets(LLPathfindingManager::ELinksetsRequestStatus pLinksetsRequestStatus, LLPathfindingLinksetListPtr pLinksetsListPtr)
|
||||
{
|
||||
mLinksetsListPtr->update(*pLinksetsListPtr);
|
||||
updateScrollList();
|
||||
|
||||
switch (pLinksetsRequestStatus)
|
||||
{
|
||||
case LLPathfindingManager::kLinksetsRequestCompleted :
|
||||
setMessagingState(kMessagingComplete);
|
||||
break;
|
||||
case LLPathfindingManager::kLinksetsRequestError :
|
||||
setMessagingState(kMessagingSetError);
|
||||
break;
|
||||
default :
|
||||
setMessagingState(kMessagingSetError);
|
||||
llassert(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingLinksets::onApplyAllFilters()
|
||||
{
|
||||
applyFilters();
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ private:
|
|||
void requestGetLinksets();
|
||||
void requestSetLinksets(LLPathfindingLinksetListPtr pLinksetList, LLPathfindingLinkset::ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD);
|
||||
void handleNewLinksets(LLPathfindingManager::ELinksetsRequestStatus pLinksetsRequestStatus, LLPathfindingLinksetListPtr pLinksetsListPtr);
|
||||
void handleUpdateLinksets(LLPathfindingManager::ELinksetsRequestStatus pLinksetsRequestStatus, LLPathfindingLinksetListPtr pLinksetsListPtr);
|
||||
|
||||
void onApplyAllFilters();
|
||||
void onClearFiltersClicked();
|
||||
|
|
|
|||
|
|
@ -62,24 +62,23 @@ LLPathfindingLinksetList::~LLPathfindingLinksetList()
|
|||
clear();
|
||||
}
|
||||
|
||||
void LLPathfindingLinksetList::update(const LLSD& pLinksetItems)
|
||||
void LLPathfindingLinksetList::update(const LLPathfindingLinksetList &pUpdateLinksetList)
|
||||
{
|
||||
for (LLSD::map_const_iterator linksetItemIter = pLinksetItems.beginMap();
|
||||
linksetItemIter != pLinksetItems.endMap(); ++linksetItemIter)
|
||||
for (LLPathfindingLinksetList::const_iterator updateLinksetIter = pUpdateLinksetList.begin();
|
||||
updateLinksetIter != pUpdateLinksetList.end(); ++updateLinksetIter)
|
||||
{
|
||||
const std::string& uuid(linksetItemIter->first);
|
||||
const LLSD& linksetData = linksetItemIter->second;
|
||||
LLPathfindingLinksetMap::iterator linksetIter = this->find(uuid);
|
||||
const std::string &uuid = updateLinksetIter->first;
|
||||
const LLPathfindingLinksetPtr updateLinksetPtr = updateLinksetIter->second;
|
||||
|
||||
LLPathfindingLinksetList::iterator linksetIter = find(uuid);
|
||||
if (linksetIter == end())
|
||||
{
|
||||
LLPathfindingLinksetPtr linkset(new LLPathfindingLinkset(uuid, linksetData));
|
||||
insert(std::pair<std::string, LLPathfindingLinksetPtr>(uuid, linkset));
|
||||
insert(std::pair<std::string, LLPathfindingLinksetPtr>(uuid, updateLinksetPtr));
|
||||
}
|
||||
else
|
||||
{
|
||||
LLPathfindingLinksetPtr linksetPtr = linksetIter->second;
|
||||
const LLPathfindingLinkset newLinkset(uuid, linksetData);
|
||||
*linksetPtr = newLinkset;
|
||||
*linksetPtr = *updateLinksetPtr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public:
|
|||
LLPathfindingLinksetList(const LLSD& pLinksetItems);
|
||||
virtual ~LLPathfindingLinksetList();
|
||||
|
||||
void update(const LLSD& pLinksetItems);
|
||||
void update(const LLPathfindingLinksetList &pUpdateLinksetList);
|
||||
|
||||
LLSD encodeAlteredFields(LLPathfindingLinkset::ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue