DBViewer: fixed Refine links menu not showing up if there are landmark links

This commit is contained in:
matlabbe
2024-11-14 20:15:04 -08:00
parent fd27380be7
commit 966feefb35

View File

@@ -4440,15 +4440,18 @@ void DatabaseViewer::refineLinks()
std::multimap<int, Link> allLinks = updateLinksWithModifications(links_);
for(std::multimap<int, Link>::iterator iter=allLinks.begin(); iter!=allLinks.end(); ++iter)
{
int minId = iter->second.from()>iter->second.to()?iter->second.to():iter->second.from();
int maxId = iter->second.from()<iter->second.to()?iter->second.to():iter->second.from();
if(minNodeId == 0 || minNodeId > minId)
if(iter->second.type() < Link::kPosePrior)
{
minNodeId = minId;
}
if(maxNodeId == 0 || maxNodeId < maxId)
{
maxNodeId = maxId;
int minId = iter->second.from()>iter->second.to()?iter->second.to():iter->second.from();
int maxId = iter->second.from()<iter->second.to()?iter->second.to():iter->second.from();
if(minNodeId == 0 || minNodeId > minId)
{
minNodeId = minId;
}
if(maxNodeId == 0 || maxNodeId < maxId)
{
maxNodeId = maxId;
}
}
}
if(minNodeId > 0)
@@ -4472,7 +4475,8 @@ void DatabaseViewer::refineLinks()
linkRefiningDialog_->getIntraInterSessions(intra, inter);
for(std::multimap<int, Link>::iterator iter=allLinks.begin(); iter!=allLinks.end(); ++iter)
{
if(type==Link::kEnd || type == iter->second.type())
if(iter->second.type() < Link::kPosePrior &&
(type==Link::kEnd || type == iter->second.type()))
{
int from = iter->second.from();
int to = iter->second.to();
@@ -4502,6 +4506,10 @@ void DatabaseViewer::refineLinks()
}
}
}
else
{
UWARN("No links can be refined!");
}
}
void DatabaseViewer::refineLinks(const QList<Link> & links)
{