diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index b4f7f81..9c6e733 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -842,16 +842,24 @@ void VisualizationGraphWidget::onMousePress(QMouseEvent *event) noexcept if (isSelectionZoneMode) { auto isMultiSelectionClick = event->modifiers().testFlag(MULTI_ZONE_SELECTION_MODIFIER); auto selectionZoneItemUnderCursor = impl->selectionZoneAt(event->pos(), plot()); - if (selectionZoneItemUnderCursor && isLeftClick) { - selectionZoneItemUnderCursor->setAssociatedEditedZones( - parentVisualizationWidget()->selectionZoneManager().selectedItems()); + + + if (selectionZoneItemUnderCursor && !selectionZoneItemUnderCursor->selected() + && !isMultiSelectionClick) { + parentVisualizationWidget()->selectionZoneManager().select( + {selectionZoneItemUnderCursor}); } - else if (!isMultiSelectionClick && isLeftClick) { + else if (!selectionZoneItemUnderCursor && !isMultiSelectionClick && isLeftClick) { parentVisualizationWidget()->selectionZoneManager().clearSelection(); } else { // No selection change } + + if (selectionZoneItemUnderCursor && isLeftClick) { + selectionZoneItemUnderCursor->setAssociatedEditedZones( + parentVisualizationWidget()->selectionZoneManager().selectedItems()); + } } diff --git a/gui/src/Visualization/VisualizationSelectionZoneItem.cpp b/gui/src/Visualization/VisualizationSelectionZoneItem.cpp index 591953b..e20c58e 100644 --- a/gui/src/Visualization/VisualizationSelectionZoneItem.cpp +++ b/gui/src/Visualization/VisualizationSelectionZoneItem.cpp @@ -1,5 +1,7 @@ #include "Visualization/VisualizationSelectionZoneItem.h" #include "Visualization/VisualizationGraphWidget.h" +#include "Visualization/VisualizationSelectionZoneManager.h" +#include "Visualization/VisualizationWidget.h" const QString &DEFAULT_COLOR = QStringLiteral("#E79D41"); @@ -344,6 +346,12 @@ void VisualizationSelectionZoneItem::mousePressEvent(QMouseEvent *event, const Q void VisualizationSelectionZoneItem::mouseMoveEvent(QMouseEvent *event, const QPointF &startPos) { if (isEditionEnabled()) { + if (!selected()) { + // Force the item to be selected during the edition + parentGraphWidget()->parentVisualizationWidget()->selectionZoneManager().setSelected( + this, true); + } + auto axis = impl->m_Plot->axisRect()->axis(QCPAxis::atBottom); auto pixelDiff = event->pos().x() - startPos.x(); auto diff = impl->pixelSizeToAxisXSize(pixelDiff);