From 2c532ed92434553b84e312f98fb16fbcd0537ad2 Mon Sep 17 00:00:00 2001 From: tetektoza Date: Thu, 12 Jun 2025 23:48:43 +0200 Subject: [PATCH] Sketcher: Fix OVP accepting input prematurely in Position and Dimensions Fixes the problem where if user has selected `Position and dimensions` mode in Preferences, then after first keystroke on 2nd label after typing something in 1st label before, the input is being accepted without allowing them to enter a number with more than 2 digits. --- src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h | 4 ++-- src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h | 4 ++-- src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h | 2 +- src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h index 4c590150ee..f33f3106e1 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h @@ -721,7 +721,7 @@ void DSHArcController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h index 0d212d7d19..b5a1e74391 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h @@ -784,7 +784,7 @@ void DSHArcSlotController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h index a3e389deff..46903efbe6 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h @@ -1086,7 +1086,7 @@ void DSHBSplineController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { double x = firstParam->getValue(); double y = secondParam->getValue(); handler->onButtonPressed(Base::Vector2d(x, y)); diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h index 70127148e6..5e93a86cf7 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h @@ -603,7 +603,7 @@ void DSHCircleController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; @@ -618,7 +618,7 @@ void DSHCircleController::doChangeDrawSketchHandlerMode() } else if (onViewParameters.size() > 3) { auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; - if (thirdParam->isSet && fourthParam->isSet + if ((thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) && handler->constructionMethod() == DrawSketchHandlerCircle::ConstructionMethod::ThreeRim) { diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h index 24c47734a6..033d2597c2 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h @@ -697,7 +697,7 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h index b77c5973e6..96e61a22b9 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h @@ -563,7 +563,7 @@ void DSHLineController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h index dc43e8aa63..c20651acd6 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h @@ -455,7 +455,7 @@ void DSHPolygonController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h index 9adb37d151..df16b3d043 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h @@ -2345,8 +2345,8 @@ void DSHRectangleController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + if (onViewParameters[OnViewParameter::First]->hasFinishedEditing + || onViewParameters[OnViewParameter::Second]->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h index 39bc844c60..4baf4773b1 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h @@ -661,7 +661,7 @@ void DSHRotateController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h index 0a3ce7c1b9..67c1b7381f 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h @@ -542,7 +542,7 @@ void DSHSlotController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h index 769f1b3977..9e19d89b57 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h @@ -713,7 +713,7 @@ void DSHTranslateController::doChangeDrawSketchHandlerMode() auto& firstParam = onViewParameters[OnViewParameter::First]; auto& secondParam = onViewParameters[OnViewParameter::Second]; - if (firstParam->isSet && secondParam->isSet) { + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::SeekSecond); } } break;