diff --git a/toonz/sources/include/tools/assistant.h b/toonz/sources/include/tools/assistant.h index 50c5840..c2b2322 100644 --- a/toonz/sources/include/tools/assistant.h +++ b/toonz/sources/include/tools/assistant.h @@ -219,8 +219,8 @@ public: } void fixPoints(); - void move(const TPointD &position); - void movePoint(const TStringId &name, const TPointD &position); + bool move(const TPointD &position); + bool movePoint(const TStringId &name, const TPointD &position); void setPointSelection(const TStringId &name, bool selected) const; void setAllPointsSelection(bool selected) const; diff --git a/toonz/sources/tnztools/assistant.cpp b/toonz/sources/tnztools/assistant.cpp index 50f3b91..9cfb89d 100644 --- a/toonz/sources/tnztools/assistant.cpp +++ b/toonz/sources/tnztools/assistant.cpp @@ -219,21 +219,28 @@ TAssistant::fixPoints() //--------------------------------------------------------------------------------------------------- -void +bool TAssistant::move(const TPointD &position) { TPointD d = position - getBasePoint().position; - for(TAssistantPointMap::iterator i = m_points.begin(); i != m_points.end(); ++i) - i->second.position += d; - fixPoints(); + if (d != TPointD()) { + for(TAssistantPointMap::iterator i = m_points.begin(); i != m_points.end(); ++i) + i->second.position += d; + fixPoints(); + return true; + } + return false; } //--------------------------------------------------------------------------------------------------- -void +bool TAssistant::movePoint(const TStringId &name, const TPointD &position) { TAssistantPointMap::iterator i = m_points.find(name); - if (i != m_points.end()) + if (i != m_points.end() && i->second.position != position) { onMovePoint(i->second, position); + return true; + } + return false; } //--------------------------------------------------------------------------------------------------- diff --git a/toonz/sources/tnztools/editassistantstool.cpp b/toonz/sources/tnztools/editassistantstool.cpp index 763a64c..588a927 100644 --- a/toonz/sources/tnztools/editassistantstool.cpp +++ b/toonz/sources/tnztools/editassistantstool.cpp @@ -546,13 +546,13 @@ public: void leftButtonDrag(const TPointD &position, const TMouseEvent&) override { if (m_dragAllPoints) { - if (Closer closer = write(ModeAssistant, true)) - m_writeAssistant->move( position + m_currentPointOffset ); + if (Closer closer = write(ModeAssistant)) + if (m_writeAssistant->move(position + m_currentPointOffset)) + touch(); } else { - if (Closer closer = write(ModePoint, true)) - m_writeAssistant->movePoint( - m_currentPointName, - position + m_currentPointOffset); + if (Closer closer = write(ModePoint)) + if (m_writeAssistant->movePoint(m_currentPointName, position + m_currentPointOffset)) + touch(); } m_currentPosition = position; getViewer()->GLInvalidateAll(); @@ -560,13 +560,13 @@ public: void leftButtonUp(const TPointD &position, const TMouseEvent&) override { if (m_dragAllPoints) { - if (Closer closer = write(ModeAssistant, true)) - m_writeAssistant->move( position + m_currentPointOffset ); + if (Closer closer = write(ModeAssistant)) + if (m_writeAssistant->move(position + m_currentPointOffset)) + touch(); } else { - if (Closer closer = write(ModePoint, true)) - m_writeAssistant->movePoint( - m_currentPointName, - position + m_currentPointOffset); + if (Closer closer = write(ModePoint)) + if (m_writeAssistant->movePoint(m_currentPointName, position + m_currentPointOffset)) + touch(); } apply();