Leave control lines in good state on commit

When exiting perspective control line editing mode while dragging a
control line, set the geometry and control line state to the appropriate
state corresponding to when lines are not being dragged.
This commit is contained in:
Lawrence Lee
2021-05-22 18:17:30 -07:00
parent a5de8920fb
commit 3ade11c970
3 changed files with 21 additions and 0 deletions

View File

@@ -199,6 +199,10 @@ bool ControlLineManager::pick3(bool picked)
bool ControlLineManager::drag1(int modifierKey)
{
if (action != Action::DRAGGING) {
return false;
}
EditDataProvider* provider = getEditProvider();
if (!provider || selected_object < 1) {
@@ -263,6 +267,20 @@ bool ControlLineManager::drag1(int modifierKey)
return false;
}
void ControlLineManager::releaseEdit(void)
{
action = Action::NONE;
if (selected_object > 0) {
mouseOverGeometry[selected_object]->state = Geometry::NORMAL;
}
edited = true;
callbacks->lineChanged();
drawing_line = false;
selected_object = -1;
}
bool ControlLineManager::getEdited(void) const
{
return edited;

View File

@@ -87,6 +87,8 @@ public:
~ControlLineManager();
bool getEdited(void) const;
/** Release anything that is currently being dragged. */
void releaseEdit(void);
void removeAll(void);
/** Sets whether or not the lines are visible and interact-able. */
void setActive(bool active);

View File

@@ -778,6 +778,7 @@ void PerspCorrection::linesEditButtonPressed(void)
listener->unsetTweakOperator(this);
listener->refreshPreview(EvPerspRender);
}
lines->releaseEdit();
lines->setDrawMode(false);
lines->setActive(false);
if (panel_listener) {