#911 Fixed picking on category legend

This commit is contained in:
Magne Sjaastad 2016-10-17 11:51:25 +02:00
parent da38067f66
commit f03e2431f9
3 changed files with 27 additions and 0 deletions

View File

@ -720,6 +720,26 @@ caf::PdmObject* RiuViewer::lastPickedObject() const
return m_viewerCommands->currentPickedObject();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::OverlayItem* RiuViewer::pickFixedPositionedLegend(int winPosX, int winPosY)
{
int translatedMousePosX = winPosX;
int translatedMousePosY = height() - winPosY;
for (auto overlayItem : m_visibleLegends)
{
if (overlayItem->layoutScheme() == cvf::OverlayItem::FIXED_POSITION &&
overlayItem->pick(translatedMousePosX, translatedMousePosY, overlayItem->fixedPosition(), overlayItem->sizeHint()))
{
return overlayItem.p();
}
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -92,6 +92,8 @@ public:
cvf::Vec3d lastPickPositionInDomainCoords() const;
caf::PdmObject* lastPickedObject() const;
cvf::OverlayItem* pickFixedPositionedLegend(int winPosX, int winPosY);
public slots:
virtual void slotSetCurrentFrame(int frameIndex);
virtual void slotEndAnimation();

View File

@ -804,6 +804,11 @@ void RiuViewerCommands::ijkFromCellIndex(size_t gridIdx, size_t cellIndex, size
bool RiuViewerCommands::handleOverlayItemPicking(int winPosX, int winPosY)
{
cvf::OverlayItem* pickedOverlayItem = m_viewer->overlayItem(winPosX, winPosY);
if (!pickedOverlayItem)
{
pickedOverlayItem = m_viewer->pickFixedPositionedLegend(winPosX, winPosY);
}
if (pickedOverlayItem)
{
caf::PdmObject* objToSelect = NULL;