SketcherToolDefaultWidget : Add a blockParameterFocusPassing bool that let us set parameters without passing focus. To fix undue passing of focus when using shortcuts U/J. For example in Polygon.

This commit is contained in:
Paddle
2023-11-03 18:09:40 +01:00
committed by abdullahtahiriyo
parent 2645242bc7
commit 8788bcc0f4
2 changed files with 36 additions and 5 deletions

View File

@@ -53,6 +53,7 @@ SketcherToolDefaultWidget::SketcherToolDefaultWidget(QWidget* parent)
: QWidget(parent)
, ui(new Ui_SketcherToolDefaultWidget)
, blockParameterSlots(false)
, blockParameterFocusPassing(false)
{
ui->setupUi(this);
@@ -200,7 +201,9 @@ void SketcherToolDefaultWidget::parameterOne_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::First] = true;
setParameterFontStyle(Parameter::First, FontStyle::Bold);
setParameterFocus(Parameter::Second);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Second);
}
signalParameterValueChanged(Parameter::First, val);
}
}
@@ -209,7 +212,9 @@ void SketcherToolDefaultWidget::parameterTwo_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Second] = true;
setParameterFontStyle(Parameter::Second, FontStyle::Bold);
setParameterFocus(Parameter::Third);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Third);
}
signalParameterValueChanged(Parameter::Second, val);
}
}
@@ -218,7 +223,9 @@ void SketcherToolDefaultWidget::parameterThree_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Third] = true;
setParameterFontStyle(Parameter::Third, FontStyle::Bold);
setParameterFocus(Parameter::Fourth);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Fourth);
}
signalParameterValueChanged(Parameter::Third, val);
}
}
@@ -227,7 +234,9 @@ void SketcherToolDefaultWidget::parameterFour_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Fourth] = true;
setParameterFontStyle(Parameter::Fourth, FontStyle::Bold);
setParameterFocus(Parameter::Fifth);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Fifth);
}
signalParameterValueChanged(Parameter::Fourth, val);
}
}
@@ -236,7 +245,9 @@ void SketcherToolDefaultWidget::parameterFive_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Fifth] = true;
setParameterFontStyle(Parameter::Fifth, FontStyle::Bold);
setParameterFocus(Parameter::Sixth);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Sixth);
}
signalParameterValueChanged(Parameter::Fifth, val);
}
}
@@ -245,6 +256,9 @@ void SketcherToolDefaultWidget::parameterSix_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Sixth] = true;
setParameterFontStyle(Parameter::Sixth, FontStyle::Bold);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Seventh);
}
signalParameterValueChanged(Parameter::Sixth, val);
}
}
@@ -253,6 +267,9 @@ void SketcherToolDefaultWidget::parameterSeven_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Seventh] = true;
setParameterFontStyle(Parameter::Seventh, FontStyle::Bold);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Eighth);
}
signalParameterValueChanged(Parameter::Seventh, val);
}
}
@@ -261,6 +278,9 @@ void SketcherToolDefaultWidget::parameterEight_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Eighth] = true;
setParameterFontStyle(Parameter::Eighth, FontStyle::Bold);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Ninth);
}
signalParameterValueChanged(Parameter::Eighth, val);
}
}
@@ -269,6 +289,9 @@ void SketcherToolDefaultWidget::parameterNine_valueChanged(double val)
if (!blockParameterSlots) {
isSet[Parameter::Ninth] = true;
setParameterFontStyle(Parameter::Ninth, FontStyle::Bold);
if (!blockParameterFocusPassing) {
setParameterFocus(Parameter::Tenth);
}
signalParameterValueChanged(Parameter::Ninth, val);
}
}
@@ -325,6 +348,12 @@ void SketcherToolDefaultWidget::setParameter(int parameterindex, double val)
QT_TRANSLATE_NOOP("Exceptions", "ToolWidget parameter index out of range"));
}
void SketcherToolDefaultWidget::setParameterWithoutPassingFocus(int parameterindex, double val)
{
Base::StateLocker lock(blockParameterFocusPassing, true);
setParameter(parameterindex, val);
}
void SketcherToolDefaultWidget::configureParameterInitialValue(int parameterindex, double val)
{
Base::StateLocker lock(blockParameterSlots, true);

View File

@@ -108,6 +108,7 @@ public:
// void keyPressEvent(QKeyEvent* event);
void setParameter(int parameterindex, double val);
void setParameterWithoutPassingFocus(int parameterindex, double val);
void configureParameterInitialValue(int parameterindex, double value);
void configureParameterUnit(int parameterindex, const Base::Unit& unit);
void configureParameterDecimals(int parameterindex, int val);
@@ -215,6 +216,7 @@ private:
/// lock to block QT slots
bool blockParameterSlots;
bool blockParameterFocusPassing;
/// vector using parameter as index indicating whether the value of a parameter was set by the
/// widget