From 035803e47dbc4e465d25b1607d73991b26637db8 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 8 Nov 2020 10:43:04 +0100 Subject: [PATCH] Part: [skip ci] properly handle transactions when editing primitives --- src/Mod/Part/Gui/DlgPrimitives.cpp | 22 +++++++++++----------- src/Mod/Part/Gui/DlgPrimitives.h | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Mod/Part/Gui/DlgPrimitives.cpp b/src/Mod/Part/Gui/DlgPrimitives.cpp index f85c86a11b..8d3012d54c 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.cpp +++ b/src/Mod/Part/Gui/DlgPrimitives.cpp @@ -1107,16 +1107,21 @@ void DlgPrimitives::accept(const QString& placement) .arg(placement); } - // store command for undo - QString cmd = tr("Edit %1").arg(QString::fromUtf8(featurePtr->Label.getValue())); - doc->openTransaction(cmd.toLatin1()); - // execute command + // execute command, a transaction is already opened Gui::Command::runCommand(Gui::Command::App, command.toLatin1()); doc->recompute(); // commit undo command doc->commitTransaction(); } +void DlgPrimitives::reject() +{ + if (featurePtr.expired()) + return; + App::Document* doc = featurePtr->getDocument(); + doc->abortTransaction(); +} + void DlgPrimitives::onChangePlane(QWidget*) { @@ -1438,16 +1443,10 @@ TaskPrimitivesEdit::~TaskPrimitivesEdit() QDialogButtonBox::StandardButtons TaskPrimitivesEdit::getStandardButtons() const { - return QDialogButtonBox::Close | + return QDialogButtonBox::Cancel | QDialogButtonBox::Ok; } -void TaskPrimitivesEdit::modifyStandardButtons(QDialogButtonBox* box) -{ - QPushButton* btn = box->button(QDialogButtonBox::Ok); - btn->setText(QApplication::translate("PartGui::DlgPrimitives", "&OK")); -} - bool TaskPrimitivesEdit::accept() { widget->accept(location->toPlacement()); @@ -1458,6 +1457,7 @@ bool TaskPrimitivesEdit::accept() bool TaskPrimitivesEdit::reject() { + widget->reject(); std::string document = getDocumentName(); // needed because resetEdit() deletes this instance Gui::Command::doCommand(Gui::Command::Gui, "Gui.getDocument('%s').resetEdit()", document.c_str()); return true; diff --git a/src/Mod/Part/Gui/DlgPrimitives.h b/src/Mod/Part/Gui/DlgPrimitives.h index f9d67ade60..231cfa077f 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.h +++ b/src/Mod/Part/Gui/DlgPrimitives.h @@ -70,6 +70,7 @@ public: ~DlgPrimitives(); void createPrimitive(const QString&); void accept(const QString&); + void reject(); private Q_SLOTS: void on_buttonCircleFromThreePoints_clicked(); @@ -149,7 +150,6 @@ public: bool accept(); bool reject(); QDialogButtonBox::StandardButtons getStandardButtons() const; - void modifyStandardButtons(QDialogButtonBox*); private: DlgPrimitives* widget;