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,29 +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+
168+ _navigationAction.getParent ()
169+
155170 // Set navigation flag on Alt press/release
156- if (event->type () == QEvent::KeyRelease)
157- {
158- if (const auto * keyEvent = static_cast <QKeyEvent*>(event))
159- {
160- if (keyEvent->key () == Qt::Key_Alt)
161- {
162- _isNavigating = false ;
163- _pixelSelectionTool.setEnabled (true );
164- _samplerPixelSelectionTool.setEnabled (true );
171+ if (event->type () == QEvent::KeyRelease) {
172+ if (const auto * keyEvent = static_cast <QKeyEvent*>(event)) {
173+ if (keyEvent->key () == Qt::Key_Alt) {
174+ setIsNavigating (false );
165175 }
166176 }
167177
168178 }
169- else if (event->type () == QEvent::KeyPress)
170- {
171- if (const auto * keyEvent = static_cast <QKeyEvent*>(event))
172- {
173- if (keyEvent->key () == Qt::Key_Alt)
174- {
175- _isNavigating = true ;
176- _pixelSelectionTool.setEnabled (false );
177- _samplerPixelSelectionTool.setEnabled (false );
179+ else if (event->type () == QEvent::KeyPress) {
180+ if (const auto * keyEvent = static_cast <QKeyEvent*>(event)) {
181+ if (keyEvent->key () == Qt::Key_Alt) {
182+ setIsNavigating (true );
178183 }
179184 }
180185
@@ -204,6 +209,7 @@ bool ScatterplotWidget::event(QEvent* event)
204209 // Navigation
205210 if (mouseEvent->buttons () == Qt::LeftButton)
206211 {
212+ setIsNavigating (true );
207213 setCursor (Qt::ClosedHandCursor);
208214 _mousePositions << mouseEvent->pos ();
209215 update ();
@@ -215,6 +221,7 @@ bool ScatterplotWidget::event(QEvent* event)
215221
216222 case QEvent::MouseButtonRelease:
217223 {
224+ setIsNavigating (false );
218225 setCursor (Qt::ArrowCursor);
219226 _mousePositions.clear ();
220227 update ();
0 commit comments