diff --git a/src/tools/abstractpathtool.cpp b/src/tools/abstractpathtool.cpp index 3cbd6a47..52b9dcf6 100644 --- a/src/tools/abstractpathtool.cpp +++ b/src/tools/abstractpathtool.cpp @@ -17,7 +17,9 @@ #include "abstractpathtool.h" -AbstractPathTool::AbstractPathTool(QObject *parent) : CaptureTool(parent) { +AbstractPathTool::AbstractPathTool(QObject *parent) : + CaptureTool(parent), m_thickness(0), m_padding(0) +{ } @@ -47,7 +49,7 @@ QWidget *AbstractPathTool::configurationWidget() { void AbstractPathTool::undo(QPixmap &pixmap) { QPainter p(&pixmap); - const int val = m_thickness; + const int val = m_thickness + m_padding; QRect area = m_backupArea + QMargins(val, val, val, val); p.drawPixmap(area.intersected(pixmap.rect()) .topLeft(), m_pixmapBackup); @@ -62,7 +64,7 @@ void AbstractPathTool::drawMove(const QPoint &p) { } void AbstractPathTool::updateBackup(const QPixmap &pixmap) { - const int val = m_thickness; + const int val = m_thickness + m_padding; QRect area = m_backupArea.normalized() + QMargins(val, val, val, val); m_pixmapBackup = pixmap.copy(area); } diff --git a/src/tools/abstractpathtool.h b/src/tools/abstractpathtool.h index 03488a5f..a97b5c88 100644 --- a/src/tools/abstractpathtool.h +++ b/src/tools/abstractpathtool.h @@ -46,4 +46,6 @@ protected: QRect m_backupArea; QVector m_points; int m_thickness; + // use m_padding to extend the area of the backup + int m_padding; }; diff --git a/src/tools/abstracttwopointtool.cpp b/src/tools/abstracttwopointtool.cpp index cd9b0065..3de0d460 100644 --- a/src/tools/abstracttwopointtool.cpp +++ b/src/tools/abstracttwopointtool.cpp @@ -17,6 +17,12 @@ #include "abstracttwopointtool.h" +AbstractTwoPointTool::AbstractTwoPointTool(QObject *parent) : + CaptureTool(parent), m_thickness(0), m_padding(0) +{ + +} + bool AbstractTwoPointTool::isValid() const { return (m_points.first != m_points.second); } @@ -60,7 +66,7 @@ void AbstractTwoPointTool::updateBackup(const QPixmap &pixmap) { QRect AbstractTwoPointTool::backupRect(const QRect &limits) const { QRect r = QRect(m_points.first, m_points.second).normalized(); - const int val = m_thickness; + const int val = m_thickness + m_padding; r += QMargins(val, val, val, val); return r.intersected(limits); } diff --git a/src/tools/abstracttwopointtool.h b/src/tools/abstracttwopointtool.h index 91162535..4b3bdedc 100644 --- a/src/tools/abstracttwopointtool.h +++ b/src/tools/abstracttwopointtool.h @@ -22,7 +22,7 @@ class AbstractTwoPointTool : public CaptureTool { Q_OBJECT public: - explicit AbstractTwoPointTool(QObject *parent = nullptr) : CaptureTool(parent){} + explicit AbstractTwoPointTool(QObject *parent = nullptr); bool isValid() const; bool closeOnButtonPressed() const; @@ -45,5 +45,7 @@ protected: QPixmap m_pixmapBackup; QPair m_points; int m_thickness; + // use m_padding to extend the area of the backup + int m_padding; }; diff --git a/src/tools/arrow/arrowtool.cpp b/src/tools/arrow/arrowtool.cpp index b235260e..a02d7bbc 100644 --- a/src/tools/arrow/arrowtool.cpp +++ b/src/tools/arrow/arrowtool.cpp @@ -69,7 +69,7 @@ QLine getShorterLine(QPoint p1, QPoint p2, const int thickness) { } // unnamed namespace ArrowTool::ArrowTool(QObject *parent) : AbstractTwoPointTool(parent) { - + m_padding = ArrowWidth / 2; } QIcon ArrowTool::icon(const QColor &background, bool inEditor) const {