From dc88e1395df15da8d4bf24fea8c3b49085646e79 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Thu, 9 Jan 2025 12:25:25 +0100 Subject: [PATCH 1/2] Add optional modifier to PixelSelectionTool --- ManiVault/src/util/PixelSelectionTool.cpp | 14 ++++++++++++++ ManiVault/src/util/PixelSelectionTool.h | 7 +++++++ 2 files changed, 21 insertions(+) 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..d09ae6556 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; @@ -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 */ From 35fa42eebd9f9483dee3af55bd160cfde3c1801e Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Thu, 9 Jan 2025 12:25:34 +0100 Subject: [PATCH 2/2] Fix typo --- ManiVault/src/util/PixelSelectionTool.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ManiVault/src/util/PixelSelectionTool.h b/ManiVault/src/util/PixelSelectionTool.h index d09ae6556..b63403239 100644 --- a/ManiVault/src/util/PixelSelectionTool.h +++ b/ManiVault/src/util/PixelSelectionTool.h @@ -105,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 {