diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index 9def1a2..bc9cf8d 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -293,9 +294,17 @@ void VisualizationGraphWidget::accept(IVisualizationWidgetVisitor *visitor) bool VisualizationGraphWidget::canDrop(const Variable &variable) const { - /// @todo : for the moment, a graph can always accomodate a variable - Q_UNUSED(variable); - return true; + auto isSpectrogram = [](const auto &variable) { + return std::dynamic_pointer_cast(variable.dataSeries()) != nullptr; + }; + + // - A spectrogram series can't be dropped on graph with existing plottables + // - No data series can be dropped on graph with existing spectrogram series + return isSpectrogram(variable) + ? impl->m_VariableToPlotMultiMap.empty() + : std::none_of( + impl->m_VariableToPlotMultiMap.cbegin(), impl->m_VariableToPlotMultiMap.cend(), + [isSpectrogram](const auto &entry) { return isSpectrogram(*entry.first); }); } bool VisualizationGraphWidget::contains(const Variable &variable) const