From b992ebfd07a273eaefebc359bbf0d22180b0367e Mon Sep 17 00:00:00 2001 From: Paddle Date: Wed, 18 Oct 2023 18:24:08 +0200 Subject: [PATCH] EditableDatumLabel : prevent re-activation or re-startEdit. --- src/Gui/EditableDatumLabel.cpp | 19 +++++++++++++++---- src/Gui/EditableDatumLabel.h | 5 +++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Gui/EditableDatumLabel.cpp b/src/Gui/EditableDatumLabel.cpp index 47464541e2..a653d140e0 100644 --- a/src/Gui/EditableDatumLabel.cpp +++ b/src/Gui/EditableDatumLabel.cpp @@ -95,7 +95,7 @@ EditableDatumLabel::~EditableDatumLabel() void EditableDatumLabel::activate() { - if (!viewer) { + if (!viewer || isActive()) { return; } @@ -133,6 +133,10 @@ void EditableDatumLabel::deactivate() void EditableDatumLabel::startEdit(double val, QObject* eventFilteringObj, bool visibleToMouse) { + if (isInEdit()) { + return; + } + QWidget* mdi = viewer->parentWidget(); label->string = " "; @@ -183,13 +187,18 @@ void EditableDatumLabel::stopEdit() } } -bool EditableDatumLabel::isInEdit() +bool EditableDatumLabel::isActive() const { - return spinBox; + return cameraSensor != nullptr; +} + +bool EditableDatumLabel::isInEdit() const +{ + return spinBox != nullptr; } -double EditableDatumLabel::getValue() +double EditableDatumLabel::getValue() const { // We use value rather than spinBox->rawValue() in case edit stopped. return value; @@ -328,11 +337,13 @@ void EditableDatumLabel::setLabelDistance(double val) label->param1 = float(val); } +// NOLINTNEXTLINE void EditableDatumLabel::setLabelStartAngle(double val) { label->param2 = float(val); } +// NOLINTNEXTLINE void EditableDatumLabel::setLabelRange(double val) { label->param3 = float(val); diff --git a/src/Gui/EditableDatumLabel.h b/src/Gui/EditableDatumLabel.h index 63c520fbd2..482aa044b7 100644 --- a/src/Gui/EditableDatumLabel.h +++ b/src/Gui/EditableDatumLabel.h @@ -53,8 +53,9 @@ public: void startEdit(double val, QObject* eventFilteringObj = nullptr, bool visibleToMouse = false); void stopEdit(); - bool isInEdit(); - double getValue(); + bool isActive() const; + bool isInEdit() const; + double getValue() const; void setSpinboxValue(double val, const Base::Unit& unit = Base::Unit::Length); void setPlacement(const Base::Placement& plc); void setColor(SbColor color);