From c1fa4c705ffef64d2221ff6e1ffd6a72fb6eeb4c Mon Sep 17 00:00:00 2001 From: Paddle Date: Wed, 15 Nov 2023 09:47:54 +0100 Subject: [PATCH] Sketcher : Tool parameter : Fix U / J keys when widget spinboxes has focus. --- src/Mod/Sketcher/Gui/DrawSketchController.h | 3 ++- .../Gui/DrawSketchDefaultWidgetController.h | 4 +++- .../Sketcher/Gui/SketcherToolDefaultWidget.cpp | 16 +++++++++++++++- src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h | 3 ++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchController.h b/src/Mod/Sketcher/Gui/DrawSketchController.h index 6e6f065aa3..6e4bde1a3e 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchController.h @@ -122,6 +122,8 @@ protected: bool init = false; // true if the controls have been initialised. bool firstMoveInit = false; // true if first mouse movement not yet performed (resets) + std::unique_ptr keymanager; + Base::Vector2d prevCursorPosition; Base::Vector2d lastControlEnforcedPosition; @@ -742,7 +744,6 @@ private: private: OnViewParameterVisibilityManager ovpVisibilityManager; ColorManager colorManager; - std::unique_ptr keymanager; }; diff --git a/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h b/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h index 42f839c1ad..2c916e7e55 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h @@ -28,6 +28,8 @@ #include "DrawSketchController.h" +#include "DrawSketchKeyboardManager.h" + namespace SketcherGui { @@ -292,7 +294,7 @@ private: nCheckbox = WidgetCheckboxesT::size(handler->constructionMethod()); nCombobox = WidgetComboboxesT::size(handler->constructionMethod()); - toolWidget->initNParameters(nParameter); + toolWidget->initNParameters(nParameter, keymanager.get()); toolWidget->initNCheckboxes(nCheckbox); toolWidget->initNComboboxes(nCombobox); diff --git a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp index 7974d2e718..b509962354 100644 --- a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp +++ b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.cpp @@ -304,7 +304,7 @@ void SketcherToolDefaultWidget::parameterTen_valueChanged(double val) } } -void SketcherToolDefaultWidget::initNParameters(int nparameters) +void SketcherToolDefaultWidget::initNParameters(int nparameters, QObject* filteringObject) { Base::StateLocker lock(blockParameterSlots, true); @@ -315,6 +315,7 @@ void SketcherToolDefaultWidget::initNParameters(int nparameters) for (int i = 0; i < nParameters; i++) { setParameterVisible(i, (i < nparameters)); setParameter(i, 0.F); + setParameterFilteringObject(i, filteringObject); setParameterFontStyle(i, FontStyle::Italic); } @@ -329,6 +330,19 @@ void SketcherToolDefaultWidget::setParameterVisible(int parameterindex, bool vis } } +void SketcherToolDefaultWidget::setParameterFilteringObject(int parameterindex, + QObject* filteringObject) +{ + if (parameterindex < nParameters) { + getParameterSpinBox(parameterindex)->installEventFilter(filteringObject); + + return; + } + + THROWM(Base::IndexError, + QT_TRANSLATE_NOOP("Exceptions", "ToolWidget parameter index out of range")); +} + void SketcherToolDefaultWidget::setParameterLabel(int parameterindex, const QString& string) { if (parameterindex < nParameters) { diff --git a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h index e8d29c5def..4349c1715b 100644 --- a/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h +++ b/src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h @@ -126,9 +126,10 @@ public: void reset(); - void initNParameters(int nparameters); + void initNParameters(int nparameters, QObject* filteringObject = nullptr); void setParameterLabel(int parameterindex, const QString& string); + void setParameterFilteringObject(int parameterindex, QObject* filteringObject); void setNoticeText(const QString& string); void setNoticeVisible(bool visible);