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);