Skip to content

Commit 39c03f5

Browse files
authored
Enable pixel selection in density render mode (#210)
Updated ScatterplotPlugin and ScatterplotWidget to allow the pixel selection tool to be enabled and function correctly in both SCATTERPLOT and DENSITY render modes. Adjusted renderer and navigator selection logic to support this change.
1 parent 3e0ac0e commit 39c03f5

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/ScatterplotPlugin.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,11 @@ void ScatterplotPlugin::selectPoints()
413413

414414
auto& pixelSelectionTool = _scatterPlotWidget->getPixelSelectionTool();
415415

416+
auto renderer = _settingsAction.getRenderModeAction().getCurrentIndex() > 0 ? dynamic_cast<Renderer2D*>(&_scatterPlotWidget->_densityRenderer) : dynamic_cast<Renderer2D*>(&_scatterPlotWidget->_pointRenderer);
417+
auto& navigator = renderer->getNavigator();
418+
416419
// Only proceed with a valid points position dataset and when the pixel selection tool is active
417-
if (!_positionDataset.isValid() || !pixelSelectionTool.isActive() || _scatterPlotWidget->_pointRenderer.getNavigator().isNavigating() || !pixelSelectionTool.isEnabled())
420+
if (!_positionDataset.isValid() || !pixelSelectionTool.isActive() || navigator.isNavigating() || !pixelSelectionTool.isEnabled())
418421
return;
419422

420423
auto selectionAreaImage = pixelSelectionTool.getAreaPixmap().toImage();
@@ -428,11 +431,8 @@ void ScatterplotPlugin::selectPoints()
428431

429432
_positionDataset->getGlobalIndices(localGlobalIndices);
430433

431-
auto& pointRenderer = _scatterPlotWidget->_pointRenderer;
432-
auto& navigator = pointRenderer.getNavigator();
433-
434434
const auto zoomRectangleWorld = navigator.getZoomRectangleWorld();
435-
const auto screenRectangle = QRect(QPoint(), pointRenderer.getRenderSize());
435+
const auto screenRectangle = QRect(QPoint(), renderer->getRenderSize());
436436

437437
float boundaries[4]{
438438
std::numeric_limits<float>::max(),
@@ -517,7 +517,7 @@ void ScatterplotPlugin::selectPoints()
517517
}
518518
}
519519

520-
auto& navigationAction = _scatterPlotWidget->getPointRendererNavigator().getNavigationAction();
520+
auto& navigationAction = navigator.getNavigationAction();
521521

522522
navigationAction.getZoomSelectionAction().setEnabled(!targetSelectionIndices.empty() && !navigationAction.getFreezeNavigation().isChecked());
523523

src/ScatterplotWidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ bool ScatterplotWidget::event(QEvent* event)
153153
}
154154

155155
auto setIsNavigating = [this](bool isNavigating) -> void {
156-
_pixelSelectionTool.setEnabled(getRenderMode() == RenderMode::SCATTERPLOT && !isNavigating);
156+
_pixelSelectionTool.setEnabled((getRenderMode() == RenderMode::SCATTERPLOT || getRenderMode() == RenderMode::DENSITY) && !isNavigating);
157157

158158
if (isNavigating) {
159159
_samplerPixelSelectionTool.setEnabled(false);

0 commit comments

Comments
 (0)