NC/Optimisations and bug fixes for objects editing (#1600)

* Optimise undo/redo for thickness, do not save every change on mouse wheel, save just the result

(cherry picked from commit c0bd74790e086dcde1c242a31e27f992a04c07e2)

* fix - In some cases undo/redo stack has excess steps (root cause is in the start move object event on a small not noticeable mouse move)

(cherry picked from commit 912f39f38083e368979f34ef14821979c34482bb)

* fix - It is impossible to remove an object using the "Undo the latest modification" button on second attempt (full undo, draw something, full undo again)

(cherry picked from commit a7f77a130a497ac6fdecd59eb43c889dcc6cbe1a)

* fix - Picked font family in the text editing tool is applied to the autoincrement tool

(cherry picked from commit 11c5eb29b1078bd6aba91fe7a74c2682767ad47c)

* Add git hash to version in the about dialog

(cherry picked from commit b4dbf52b3217b51614100bd307046772a37dc484)

* Add configuration option to limit undo steps

(cherry picked from commit f13cbecabb172060b196a535348f145457ad2f0f)

* Object delete operation is not registered on the undo stack

(cherry picked from commit 5c966cb5d3702a4d735dd542ad03a80899250b4a)

* fix - Unable to draw an object from second attempt after ColorPicker was called

(cherry picked from commit 49a119886fec253376703e8aa2386e16bc23cbcf)

* fix - App freezes and then crashes when changing object line thickness via Active thickness slider in the tool settings

(cherry picked from commit 26fd64f1c333f70c67282630362cbc5fc8427a39)

* fix - set min and max values for thickness slider to 1-100

(cherry picked from commit 6d8661666e4e199a3c29f991d52bef73ec36129c)

* fix - Crash on Move Tool button with an active Text editor

(cherry picked from commit 461f95da3afda56c0e9693e768e86b18d056eecc)

* fix - Text is not modified when picking it as object in the list

(cherry picked from commit 366bb0928b430d442dc67299353f7dc5ceb743b4)

* fix - Text modification cannot be undone
fix - Object that was created after the text object disappears after undo editing text

(cherry picked from commit 79b2fb92aca65b177cffb386db141d30551a2b1c)

* fix - Text is not saved if picking any object in the objects list without clicking at the empty space

(cherry picked from commit 4679a744a3d2498fe27379f89d48b347a34ae0dc)

* Last available undo step reset everything to the beginning

(cherry picked from commit 4af7423d00cfaa9feabc905400aa3ac30fc4a3ea)

* Missed changes (cherry-pick) for switching ColorPicker behaviour (right mouse click and hold to right mouse click and left click)

Co-authored-by: Yuriy Puchkov <yuriy.puchkov@namecheap.com>
This commit is contained in:
Yurii Puchkov
2021-05-02 20:48:22 +03:00
committed by GitHub
parent bd2feadc65
commit df5760c15a
17 changed files with 203 additions and 68 deletions

View File

@@ -174,6 +174,8 @@ void TextTool::process(QPainter& painter, const QPixmap& pixmap)
return;
}
const int val = 5;
QFont orig_font = painter.font();
QPen orig_pen = painter.pen();
QFontMetrics fm(m_font);
QSize size(fm.boundingRect(QRect(), 0, m_text).size());
size.setWidth(size.width() + val * 2);
@@ -185,6 +187,8 @@ void TextTool::process(QPainter& painter, const QPixmap& pixmap)
if (!editMode()) {
painter.drawText(m_textArea + QMargins(-val, -val, val, val), m_text);
}
painter.setFont(orig_font);
painter.setPen(orig_pen);
}
void TextTool::drawObjectSelection(QPainter& painter)
@@ -296,3 +300,16 @@ const QPoint* TextTool::pos()
m_currentPos = m_textArea.topLeft();
return &m_currentPos;
}
void TextTool::setEditMode(bool b)
{
if (b) {
m_textOld = m_text;
}
CaptureTool::setEditMode(b);
}
bool TextTool::isChanged()
{
return QString::compare(m_text, m_textOld, Qt::CaseInsensitive) != 0;
}