From fc9c5a75217c099861cdc8a46bbb415b58d87f5c Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Wed, 26 Mar 2025 21:41:17 +0100 Subject: [PATCH] TechDraw: Section task: Fix spinbox (#20413) Co-authored-by: Kacper Donat --- .../TechDraw/Gui/Widgets/CompassWidget.cpp | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/Mod/TechDraw/Gui/Widgets/CompassWidget.cpp b/src/Mod/TechDraw/Gui/Widgets/CompassWidget.cpp index 74e4357c6e..29999791c2 100644 --- a/src/Mod/TechDraw/Gui/Widgets/CompassWidget.cpp +++ b/src/Mod/TechDraw/Gui/Widgets/CompassWidget.cpp @@ -68,17 +68,11 @@ bool CompassWidget::eventFilter(QObject* target, QEvent* event) if (target == dsbAngle) { if (event->type() == QEvent::KeyPress) { QKeyEvent* keyEvent = static_cast(event); - if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) { - dsbAngle->interpretText(); - slotSpinBoxEnter(dsbAngle->rawValue()); + const auto isEnter = keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter; + if (isEnter && dsbAngle->isNormalized()) { return true; } } - else if (event->type() == QEvent::FocusOut) { - dsbAngle->interpretText(); - slotSpinBoxEnter(dsbAngle->rawValue()); - return true; - } } return QWidget::eventFilter(target, event); } @@ -133,15 +127,8 @@ void CompassWidget::buildWidget() dsbAngle = new Gui::QuantitySpinBox(this); dsbAngle->setObjectName(QStringLiteral("dsbAngle")); dsbAngle->setUnit(Base::Unit::Angle); - sizePolicy2.setHeightForWidth(dsbAngle->sizePolicy().hasHeightForWidth()); - dsbAngle->setSizePolicy(sizePolicy2); - dsbAngle->setMinimumSize(QSize(75, 26)); - dsbAngle->setMouseTracking(true); - dsbAngle->setFocusPolicy(Qt::ClickFocus); - dsbAngle->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); - dsbAngle->setKeyboardTracking(false); - dsbAngle->setMaximum(360.000000000000000); - dsbAngle->setMinimum(-360.000000000000000); + connect(dsbAngle, QOverload::of(&Gui::QuantitySpinBox::valueChanged), + this, &CompassWidget::slotSpinBoxEnter); compassControlLayout->addWidget(dsbAngle);