diff --git a/src/Mod/PartDesign/Gui/TaskPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPatternParameters.cpp index 4550f7fc1e..f713955d27 100644 --- a/src/Mod/PartDesign/Gui/TaskPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPatternParameters.cpp @@ -350,19 +350,27 @@ void TaskPatternParameters::apply() FCMD_OBJ_CMD(pattern, "SpacingPattern = " << parametersWidget->getSpacingPatternsAsString()); - if (!parametersWidget2) { - return; + if (parametersWidget2) { + parametersWidget2->getAxis(obj, dirs); + direction = buildLinkSingleSubPythonStr(obj, dirs); + + FCMD_OBJ_CMD(pattern, "Direction2 = " << direction.c_str()); + FCMD_OBJ_CMD(pattern, "Reversed2 = " << parametersWidget2->getReverse()); + FCMD_OBJ_CMD(pattern, "Mode2 = " << parametersWidget2->getMode()); + parametersWidget2->applyQuantitySpinboxes(); + + FCMD_OBJ_CMD(pattern, + "SpacingPattern2 = " << parametersWidget2->getSpacingPatternsAsString()); } - parametersWidget2->getAxis(obj, dirs); - direction = buildLinkSingleSubPythonStr(obj, dirs); - - FCMD_OBJ_CMD(pattern, "Direction2 = " << direction.c_str()); - FCMD_OBJ_CMD(pattern, "Reversed2 = " << parametersWidget2->getReverse()); - FCMD_OBJ_CMD(pattern, "Mode2 = " << parametersWidget2->getMode()); - parametersWidget2->applyQuantitySpinboxes(); - - FCMD_OBJ_CMD(pattern, "SpacingPattern2 = " << parametersWidget2->getSpacingPatternsAsString()); + // The user may have changed a value and immediately hit 'OK' or Enter. + // This triggers accept() before the update timer for the 3D view has a + // chance to fire. If the timer is active, it means a recompute is + // pending. + if (updateViewTimer && updateViewTimer->isActive()) { + updateViewTimer->stop(); + recomputeFeature(); + } } //************************************************************************** @@ -383,3 +391,4 @@ TaskDlgLinearPatternParameters::TaskDlgLinearPatternParameters( #include "moc_TaskPatternParameters.cpp" +