From 29cfe6db5170fd2ea856414ee66e6737c48e57a4 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Thu, 14 Mar 2024 12:42:17 -0400 Subject: [PATCH] [TD]prevent fail on delete with open dialog --- .../TechDraw/Gui/ViewProviderDimension.cpp | 23 +++++++++++++++++++ src/Mod/TechDraw/Gui/ViewProviderDimension.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index 4fb5f660a6..a08b4fccf3 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -30,11 +30,14 @@ # include #endif +#include + #include #include #include #include #include +#include #include #include @@ -283,3 +286,23 @@ bool ViewProviderDimension::canDelete(App::DocumentObject *obj) const Q_UNUSED(obj) return true; } + +bool ViewProviderDimension::onDelete(const std::vector & parms) +{ + Q_UNUSED(parms) +// Base::Console().Message("VPB::onDelete() - parms: %d\n", parms.size()); + auto dlg = Gui::Control().activeDialog(); + auto ourDlg = dynamic_cast(dlg); + if (ourDlg) { + QString bodyMessage; + QTextStream bodyMessageStream(&bodyMessage); + bodyMessageStream << qApp->translate("TaskDimension", + "You cannot delete this dimension now because\nthere is an open task dialog."); + QMessageBox::warning(Gui::getMainWindow(), + qApp->translate("TaskDimension", "Can Not Delete"), bodyMessage, + QMessageBox::Ok); + return false; + } + return true; +} + diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.h b/src/Mod/TechDraw/Gui/ViewProviderDimension.h index 9756101fc4..d385d66b79 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.h @@ -76,6 +76,8 @@ public: void setupContextMenu(QMenu*, QObject*, const char*) override; bool setEdit(int ModNum) override; bool doubleClicked() override; + bool onDelete(const std::vector & parms) override; + TechDraw::DrawViewDimension* getViewObject() const override;