From 7f24637fa7d35941f9e71d9d28da0f01dada762a Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 11 Jun 2026 13:12:39 +0200 Subject: [PATCH] Show grid statistics context menu items only when clicking inside overlay info box --- ApplicationLibCode/UserInterface/RiuViewer.cpp | 12 ++++++++++++ ApplicationLibCode/UserInterface/RiuViewer.h | 2 ++ .../UserInterface/RiuViewerCommands.cpp | 11 ++++++++--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ApplicationLibCode/UserInterface/RiuViewer.cpp b/ApplicationLibCode/UserInterface/RiuViewer.cpp index f5e057d272..5dcd893919 100644 --- a/ApplicationLibCode/UserInterface/RiuViewer.cpp +++ b/ApplicationLibCode/UserInterface/RiuViewer.cpp @@ -1282,6 +1282,18 @@ cvf::OverlayItem* RiuViewer::pickFixedPositionedLegend( int winPosX, int winPosY return nullptr; } +//-------------------------------------------------------------------------------------------------- +/// Returns true if the given window position is inside the overlay info box (the result info and +/// grid statistics histogram drawn in the upper left corner of the view). +//-------------------------------------------------------------------------------------------------- +bool RiuViewer::isMousePosWithinInfoBox( int winPosX, int winPosY ) const +{ + if ( !m_infoPickArea.isNull() && m_infoPickArea.contains( winPosX, winPosY ) ) return true; + if ( !m_infoPickAreaCompView.isNull() && m_infoPickAreaCompView.contains( winPosX, winPosY ) ) return true; + + return false; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuViewer.h b/ApplicationLibCode/UserInterface/RiuViewer.h index 45e88a5786..0f886e9388 100644 --- a/ApplicationLibCode/UserInterface/RiuViewer.h +++ b/ApplicationLibCode/UserInterface/RiuViewer.h @@ -127,6 +127,8 @@ public: cvf::OverlayItem* pickFixedPositionedLegend( int winPosX, int winPosY ); + bool isMousePosWithinInfoBox( int winPosX, int winPosY ) const; + void setCursorPosition( const cvf::Vec3d& domainCoord ); std::vector> visibleParts(); diff --git a/ApplicationLibCode/UserInterface/RiuViewerCommands.cpp b/ApplicationLibCode/UserInterface/RiuViewerCommands.cpp index 9e2f18d6b9..9e420d414c 100644 --- a/ApplicationLibCode/UserInterface/RiuViewerCommands.cpp +++ b/ApplicationLibCode/UserInterface/RiuViewerCommands.cpp @@ -635,9 +635,14 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event ) menuBuilder.subMenuEnd(); menuBuilder.addSeparator(); - menuBuilder << "RicCreateGridStatisticsPlotFeature"; - menuBuilder << "RicShowGridStatisticsFeature"; - menuBuilder << "RicCopyGridStatisticsToClipboardFeature"; + // Grid statistics commands operate on the result shown in the overlay info box, so only + // offer them when the context menu is invoked inside that box, not on the view geometry. + if ( m_viewer->isMousePosWithinInfoBox( event->x(), event->y() ) ) + { + menuBuilder << "RicCreateGridStatisticsPlotFeature"; + menuBuilder << "RicShowGridStatisticsFeature"; + menuBuilder << "RicCopyGridStatisticsToClipboardFeature"; + } menuBuilder << "RicSelectColorResult"; menuBuilder.addSeparator(); menuBuilder << "RicHideGridGeometryFeature";