diff --git a/ApplicationCode/UserInterface/RiuViewer.cpp b/ApplicationCode/UserInterface/RiuViewer.cpp index 29e0f0de59..0c6ece37fb 100644 --- a/ApplicationCode/UserInterface/RiuViewer.cpp +++ b/ApplicationCode/UserInterface/RiuViewer.cpp @@ -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; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/UserInterface/RiuViewer.h b/ApplicationCode/UserInterface/RiuViewer.h index 658c5cfee8..9d25a6c9fb 100644 --- a/ApplicationCode/UserInterface/RiuViewer.h +++ b/ApplicationCode/UserInterface/RiuViewer.h @@ -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(); diff --git a/ApplicationCode/UserInterface/RiuViewerCommands.cpp b/ApplicationCode/UserInterface/RiuViewerCommands.cpp index 0cb78de0c6..9cc2545b5c 100644 --- a/ApplicationCode/UserInterface/RiuViewerCommands.cpp +++ b/ApplicationCode/UserInterface/RiuViewerCommands.cpp @@ -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;