From add50e9e85d6d14751e1e29628a370d4c85a53d8 Mon Sep 17 00:00:00 2001 From: Thomas Kroes Date: Wed, 25 Feb 2026 08:36:39 +0100 Subject: [PATCH] Refactor dataset picker invalidation and reset Introduce helper lambdas to centralize dataset picker state updates: invalidateFilters() to invalidate dependent filters and resetAuxiliaryDatasets() to clear aux picker selections (setCurrentIndex(-1)). Connect the position picker signal to run the invalidation and connect position dataset change signals to reset auxiliary pickers so color/size/opacity selections are cleared when position datasets change. This removes duplicated calls and ensures auxiliary pickers don't hold stale selections. --- src/DatasetsAction.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/DatasetsAction.cpp b/src/DatasetsAction.cpp index e31ce00..06bd0d0 100644 --- a/src/DatasetsAction.cpp +++ b/src/DatasetsAction.cpp @@ -42,15 +42,24 @@ DatasetsAction::DatasetsAction(QObject* parent, const QString& title) : setupDatasetPickerActions(scatterplotPlugin); - connect(&_positionDatasetPickerAction, &DatasetPickerAction::datasetPicked, [this, scatterplotPlugin](Dataset pickedDataset) -> void { + const auto invalidateFilters = [this, scatterplotPlugin]() -> void { _colorDatasetPickerAction.invalidateFilter(); _pointSizeDatasetPickerAction.invalidateFilter(); _pointOpacityDatasetPickerAction.invalidateFilter(); + }; + + connect(&_positionDatasetPickerAction, &DatasetPickerAction::datasetPicked, [this, scatterplotPlugin, invalidateFilters](Dataset pickedDataset) -> void { + invalidateFilters(); }); - _colorDatasetPickerAction.invalidateFilter(); - _pointSizeDatasetPickerAction.invalidateFilter(); - _pointOpacityDatasetPickerAction.invalidateFilter(); + const auto resetAuxilliaryDatasets = [this]() -> void { + _colorDatasetPickerAction.setCurrentIndex(-1); + _pointSizeDatasetPickerAction.setCurrentIndex(-1); + _pointOpacityDatasetPickerAction.setCurrentIndex(-1); + }; + + connect(&scatterplotPlugin->getPositionDataset(), &Dataset::changed, this, resetAuxilliaryDatasets); + connect(&scatterplotPlugin->getPositionSourceDataset(), &Dataset::changed, this, resetAuxilliaryDatasets); } void DatasetsAction::connectToPublicAction(WidgetAction* publicAction, bool recursive)