From 8788bcc0f4f97b69a7cbb8ff536cafc9fc3c0032 Mon Sep 17 00:00:00 2001 From: Paddle Date: Fri, 3 Nov 2023 18:09:40 +0100 Subject: [PATCH] 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. --- .../Gui/SketcherToolDefaultWidget.cpp | 39 ++++++++++++++++--- .../Sketcher/Gui/SketcherToolDefaultWidget.h | 2 + 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp index 90cb495505..7974d2e718 100644 --- a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp +++ b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp @@ -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); diff --git a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h index ecac9dbd37..e8d29c5def 100644 --- a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h +++ b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h @@ -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