Merge pull request #21943 from tetektoza/fix/21927_change_enter_ovp_accepting_dim
Sketcher: Change enter behavior on OVP to put OVP in lock state only
This commit is contained in:
@@ -365,8 +365,56 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void finishEditingOnAllOVPs()
|
||||
{
|
||||
// we call this on a current OnViewParameter when pressed CTRL+ENTER to accept
|
||||
// input on all visible ovps of current mode
|
||||
|
||||
// we check for initial state, since `onViewValueChanged` can process to next mode
|
||||
// if we set hasFinishedEditing on current mode
|
||||
auto initialState = handler->state();
|
||||
for (size_t i = 0; i < onViewParameters.size(); i++) {
|
||||
if (isOnViewParameterOfCurrentMode(i) && isOnViewParameterVisible(i)
|
||||
&& initialState == getState(static_cast<int>(i))) {
|
||||
onViewParameters[i]->isSet = true;
|
||||
onViewParameters[i]->hasFinishedEditing = true;
|
||||
|
||||
double currentValue = onViewParameters[i]->getValue();
|
||||
onViewValueChanged(static_cast<int>(i), currentValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tryViewValueChanged(int onviewparameterindex, double value)
|
||||
{
|
||||
// go to next label in circular manner if user has currently pressed enter on current one
|
||||
if (onViewParameters[onviewparameterindex]->hasFinishedEditing) {
|
||||
// find the first parameter of the current mode that is not locked to start the cycle
|
||||
auto findNextUnlockedParameter = [this](size_t startIndex) -> int {
|
||||
for (size_t i = startIndex; i < onViewParameters.size(); i++) {
|
||||
if (isOnViewParameterOfCurrentMode(i)
|
||||
&& !onViewParameters[i]->hasFinishedEditing) {
|
||||
return static_cast<int>(i);
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
|
||||
// find first unlocked parameter (for cycling back)
|
||||
int firstOfCurrentMode = findNextUnlockedParameter(0);
|
||||
|
||||
// find next unlocked parameter after current one
|
||||
int nextUnlockedIndex = findNextUnlockedParameter(onviewparameterindex + 1);
|
||||
|
||||
// if no next parameter found, cycle back to first of current mode
|
||||
if (nextUnlockedIndex != -1) {
|
||||
setFocusToOnViewParameter(nextUnlockedIndex);
|
||||
}
|
||||
else if (firstOfCurrentMode != -1) {
|
||||
setFocusToOnViewParameter(firstOfCurrentMode);
|
||||
}
|
||||
}
|
||||
|
||||
/* That is not supported with on-view parameters.
|
||||
// -> A machine does not forward to a next state when adapting the parameter (though it
|
||||
// may forward to
|
||||
@@ -628,6 +676,11 @@ protected:
|
||||
unsetOnViewParameter(parameter);
|
||||
finishControlsChanged();
|
||||
});
|
||||
|
||||
// Connect Ctrl+Enter signal to apply values to all visible OVPs in current stage
|
||||
QObject::connect(parameter, &Gui::EditableDatumLabel::finishEditingOnAllOVPs, [this]() {
|
||||
finishEditingOnAllOVPs();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -721,7 +721,7 @@ void DSHArcController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -729,7 +729,7 @@ void DSHArcController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
}
|
||||
} break;
|
||||
@@ -743,7 +743,7 @@ void DSHArcController::doChangeDrawSketchHandlerMode()
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) {
|
||||
if (fifthParam->hasFinishedEditing && sixthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -784,7 +784,7 @@ void DSHArcSlotController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -792,7 +792,7 @@ void DSHArcSlotController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -1096,7 +1096,7 @@ void DSHBSplineController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->canGoToNextMode(); // its not going to next mode
|
||||
|
||||
unsetOnViewParameter(thirdParam.get());
|
||||
|
||||
@@ -603,7 +603,7 @@ void DSHCircleController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -630,7 +630,7 @@ void DSHCircleController::doChangeDrawSketchHandlerMode()
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) {
|
||||
if (fifthParam->hasFinishedEditing && sixthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -697,7 +697,7 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -705,7 +705,7 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
}
|
||||
} break;
|
||||
@@ -720,7 +720,7 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode()
|
||||
}
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) {
|
||||
if (fifthParam->hasFinishedEditing && sixthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,7 +563,7 @@ void DSHLineController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -571,7 +571,7 @@ void DSHLineController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -234,7 +234,7 @@ void DSHPointController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
// handler->finish(); // Called by the change of mode
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ void DSHPolygonController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -463,7 +463,7 @@ void DSHPolygonController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -2346,14 +2346,14 @@ void DSHRectangleController::doChangeDrawSketchHandlerMode()
|
||||
switch (handler->state()) {
|
||||
case SelectMode::SeekFirst: {
|
||||
if (onViewParameters[OnViewParameter::First]->hasFinishedEditing
|
||||
|| onViewParameters[OnViewParameter::Second]->hasFinishedEditing) {
|
||||
&& onViewParameters[OnViewParameter::Second]->hasFinishedEditing) {
|
||||
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing
|
||||
|| onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) {
|
||||
&& onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) {
|
||||
|
||||
if (handler->roundCorners || handler->makeFrame
|
||||
|| handler->constructionMethod() == ConstructionMethod::ThreePoints
|
||||
@@ -2387,7 +2387,7 @@ void DSHRectangleController::doChangeDrawSketchHandlerMode()
|
||||
}
|
||||
else {
|
||||
if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing
|
||||
|| onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) {
|
||||
&& onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) {
|
||||
if (handler->roundCorners || handler->makeFrame) {
|
||||
handler->setState(SelectMode::SeekFourth);
|
||||
}
|
||||
|
||||
@@ -702,7 +702,7 @@ void DSHRotateController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -542,7 +542,7 @@ void DSHSlotController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -550,7 +550,7 @@ void DSHSlotController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -756,7 +756,7 @@ void DSHTranslateController::doChangeDrawSketchHandlerMode()
|
||||
auto& firstParam = onViewParameters[OnViewParameter::First];
|
||||
auto& secondParam = onViewParameters[OnViewParameter::Second];
|
||||
|
||||
if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) {
|
||||
if (firstParam->hasFinishedEditing && secondParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
@@ -764,7 +764,7 @@ void DSHTranslateController::doChangeDrawSketchHandlerMode()
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) {
|
||||
if (thirdParam->hasFinishedEditing && fourthParam->hasFinishedEditing) {
|
||||
if (handler->secondNumberOfCopies == 1) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
@@ -777,7 +777,7 @@ void DSHTranslateController::doChangeDrawSketchHandlerMode()
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) {
|
||||
if (fifthParam->hasFinishedEditing && sixthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
} break;
|
||||
|
||||
Reference in New Issue
Block a user