1818
1919#include < math.h>
2020
21- #include " ScatterplotPlugin.h "
21+ #include < ViewPlugin.h >
2222
2323using namespace mv ;
2424
@@ -48,7 +48,7 @@ namespace
4848 }
4949}
5050
51- ScatterplotWidget::ScatterplotWidget () :
51+ ScatterplotWidget::ScatterplotWidget (mv::plugin::ViewPlugin* parentPlugin ) :
5252 QOpenGLWidget(),
5353 _pointRenderer(),
5454 _densityRenderer(DensityRenderer::RenderMode::DENSITY),
@@ -65,7 +65,8 @@ ScatterplotWidget::ScatterplotWidget() :
6565 _pixelRatio(1.0 ),
6666 _mousePositions(),
6767 _isNavigating(false ),
68- _weightDensity(false )
68+ _weightDensity(false ),
69+ _parentPlugin(parentPlugin)
6970{
7071 setContextMenuPolicy (Qt::CustomContextMenu);
7172 setAcceptDrops (true );
@@ -152,19 +153,33 @@ bool ScatterplotWidget::event(QEvent* event)
152153 if (!event)
153154 return QOpenGLWidget::event (event);
154155
156+ auto setIsNavigating = [this ](bool isNavigating) -> void {
157+ _isNavigating = isNavigating;
158+ _pixelSelectionTool.setEnabled (!isNavigating);
159+ if (isNavigating) {
160+ _samplerPixelSelectionTool.setEnabled (false );
161+ }
162+ else if (_parentPlugin) { // reset to UI-setting
163+ _samplerPixelSelectionTool.setEnabled (_parentPlugin->getSamplerAction ().isEnabled ());
164+ }
165+
166+ };
167+
155168 // Set navigation flag on Alt press/release
156- if (event->type () == QEvent::KeyRelease)
157- {
158- if (const auto * keyEvent = static_cast <QKeyEvent*>(event))
159- if (keyEvent->key () == Qt::Key_Alt)
160- _isNavigating = false ;
169+ if (event->type () == QEvent::KeyRelease) {
170+ if (const auto * keyEvent = static_cast <QKeyEvent*>(event)) {
171+ if (keyEvent->key () == Qt::Key_Alt) {
172+ setIsNavigating (false );
173+ }
174+ }
161175
162176 }
163- else if (event->type () == QEvent::KeyPress)
164- {
165- if (const auto * keyEvent = static_cast <QKeyEvent*>(event))
166- if (keyEvent->key () == Qt::Key_Alt)
167- _isNavigating = true ;
177+ else if (event->type () == QEvent::KeyPress) {
178+ if (const auto * keyEvent = static_cast <QKeyEvent*>(event)) {
179+ if (keyEvent->key () == Qt::Key_Alt) {
180+ setIsNavigating (true );
181+ }
182+ }
168183
169184 }
170185
@@ -192,7 +207,7 @@ bool ScatterplotWidget::event(QEvent* event)
192207 // Navigation
193208 if (mouseEvent->buttons () == Qt::LeftButton)
194209 {
195- _pixelSelectionTool. setEnabled ( false );
210+ setIsNavigating ( true );
196211 setCursor (Qt::ClosedHandCursor);
197212 _mousePositions << mouseEvent->pos ();
198213 update ();
@@ -204,7 +219,7 @@ bool ScatterplotWidget::event(QEvent* event)
204219
205220 case QEvent::MouseButtonRelease:
206221 {
207- _pixelSelectionTool. setEnabled ( true );
222+ setIsNavigating ( false );
208223 setCursor (Qt::ArrowCursor);
209224 _mousePositions.clear ();
210225 update ();
0 commit comments