diff --git a/ManiVault/src/util/PixelSelectionTool.cpp b/ManiVault/src/util/PixelSelectionTool.cpp index b2916c4cf..be88344b0 100644 --- a/ManiVault/src/util/PixelSelectionTool.cpp +++ b/ManiVault/src/util/PixelSelectionTool.cpp @@ -22,6 +22,7 @@ PixelSelectionTool::PixelSelectionTool(QWidget* targetWidget, const bool& enable _active(false), _notifyDuringSelection(true), _brushRadius(BRUSH_RADIUS_DEFAULT), + _fixedBrushRadiusModifier(Qt::NoModifier), _mousePosition(), _mousePositions(), _mouseButtons(), @@ -126,6 +127,16 @@ void PixelSelectionTool::setBrushRadius(const float& brushRadius) paint(); } +Qt::KeyboardModifier PixelSelectionTool::getFixedBrushRadiusModifier() const +{ + return _fixedBrushRadiusModifier; +} + +void PixelSelectionTool::setFixedBrushRadiusModifier(Qt::KeyboardModifier fixedBrushRadiusModifier) +{ + _fixedBrushRadiusModifier = fixedBrushRadiusModifier; +} + QColor PixelSelectionTool::getMainColor() const { return _mainColor; @@ -495,6 +506,9 @@ bool PixelSelectionTool::eventFilter(QObject* target, QEvent* event) case PixelSelectionType::Brush: case PixelSelectionType::Sample: { + if (_fixedBrushRadiusModifier != Qt::NoModifier && QGuiApplication::keyboardModifiers() == _fixedBrushRadiusModifier) + break; + if (wheelEvent->angleDelta().y() < 0) setBrushRadius(_brushRadius - BRUSH_RADIUS_DELTA); else diff --git a/ManiVault/src/util/PixelSelectionTool.h b/ManiVault/src/util/PixelSelectionTool.h index d18160891..b63403239 100644 --- a/ManiVault/src/util/PixelSelectionTool.h +++ b/ManiVault/src/util/PixelSelectionTool.h @@ -86,6 +86,12 @@ class CORE_EXPORT PixelSelectionTool : public QObject */ void setBrushRadius(const float& brushRadius); + /** Get fixed brush radius modifier */ + Qt::KeyboardModifier getFixedBrushRadiusModifier() const; + + /** Set fixed brush radius modifier */ + void setFixedBrushRadiusModifier(Qt::KeyboardModifier fixedBrushRadiusModifier); + /** Get main drawing color */ QColor getMainColor() const; @@ -99,7 +105,7 @@ class CORE_EXPORT PixelSelectionTool : public QObject void setChanged(); /** - * Get whether the selection process is cBurrently active + * Get whether the selection process is currently active * @return Boolean indicating whether the selection process is currently active */ bool isActive() const { @@ -186,6 +192,7 @@ class CORE_EXPORT PixelSelectionTool : public QObject bool _active; /** Whether the selection process is active */ bool _notifyDuringSelection; /** Whether the selection is published continuously or at the end */ float _brushRadius; /** Brush radius */ + Qt::KeyboardModifier _fixedBrushRadiusModifier; /** Do not change brush radius when fixed by pressing a key (e.g. for navigation) */ QPoint _mousePosition; /** Current mouse position */ QVector _mousePositions; /** Recorded mouse positions */ int _mouseButtons; /** State of the left, middle and right mouse buttons */