From 911652e5eb825901af988babd0b4230985862636 Mon Sep 17 00:00:00 2001 From: Jeremy Borgman Date: Tue, 16 Feb 2021 19:08:47 -0600 Subject: [PATCH] Fixed issue with undo and rounded rectangles --- src/tools/rectangle/rectangletool.cpp | 10 ++++++---- src/tools/rectangle/rectangletool.h | 2 ++ src/tools/selection/selectiontool.cpp | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/tools/rectangle/rectangletool.cpp b/src/tools/rectangle/rectangletool.cpp index 530fd729..b2f220a7 100644 --- a/src/tools/rectangle/rectangletool.cpp +++ b/src/tools/rectangle/rectangletool.cpp @@ -26,6 +26,7 @@ RectangleTool::RectangleTool(QObject* parent) : AbstractTwoPointTool(parent) { m_supportsDiagonalAdj = true; + context_thickness = 0; } QIcon RectangleTool::icon(const QColor& background, bool inEditor) const @@ -60,9 +61,9 @@ void RectangleTool::process(QPainter& painter, if (recordUndo) { updateBackup(pixmap); } - painter.setPen(QPen(m_color, PADDING_VALUE + m_thickness)); + painter.setPen(QPen(m_color, m_thickness)); painter.setBrush(QBrush(m_color)); - if (m_thickness == 0) { + if (context_thickness == 0) { painter.drawRect(QRect(m_points.first, m_points.second)); } else { painter.drawRoundedRect( @@ -78,14 +79,15 @@ void RectangleTool::process(QPainter& painter, void RectangleTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { - painter.setPen(QPen(context.color, PADDING_VALUE + context.thickness)); + painter.setPen(QPen(context.color, context.thickness)); painter.drawLine(context.mousePos, context.mousePos); } void RectangleTool::drawStart(const CaptureContext& context) { m_color = context.color; - m_thickness = context.thickness; + m_thickness = context.thickness + PADDING_VALUE; + context_thickness = context.thickness; m_points.first = context.mousePos; m_points.second = context.mousePos; } diff --git a/src/tools/rectangle/rectangletool.h b/src/tools/rectangle/rectangletool.h index fc936c9f..8864434a 100644 --- a/src/tools/rectangle/rectangletool.h +++ b/src/tools/rectangle/rectangletool.h @@ -39,6 +39,8 @@ public: protected: ToolType nameID() const override; +private: + int context_thickness; public slots: void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; diff --git a/src/tools/selection/selectiontool.cpp b/src/tools/selection/selectiontool.cpp index 63d6e9bd..5b0e994e 100644 --- a/src/tools/selection/selectiontool.cpp +++ b/src/tools/selection/selectiontool.cpp @@ -65,21 +65,21 @@ void SelectionTool::process(QPainter& painter, if (recordUndo) { updateBackup(pixmap); } - painter.setPen(QPen(m_color, PADDING_VALUE + m_thickness)); + painter.setPen(QPen(m_color, m_thickness)); painter.drawRect(QRect(m_points.first, m_points.second)); } void SelectionTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { - painter.setPen(QPen(context.color, PADDING_VALUE + context.thickness)); + painter.setPen(QPen(context.color, context.thickness)); painter.drawLine(context.mousePos, context.mousePos); } void SelectionTool::drawStart(const CaptureContext& context) { m_color = context.color; - m_thickness = context.thickness; + m_thickness = context.thickness + PADDING_VALUE; m_points.first = context.mousePos; m_points.second = context.mousePos; }