[TD]prevent detail object deletion during task dialog
This commit is contained in:
committed by
Yorik van Havre
parent
1d64a3a983
commit
c47cd6bece
@@ -365,12 +365,28 @@ void ViewProviderViewPart::handleChangedPropertyType(Base::XMLReader &reader, co
|
||||
|
||||
bool ViewProviderViewPart::onDelete(const std::vector<std::string> & subNames)
|
||||
{
|
||||
// Base::Console().message("VPVP::onDelete(%d subNames)\n", subNames.size());
|
||||
// we cannot delete if the view has a section or detail view
|
||||
(void) subNames;
|
||||
QString bodyMessage;
|
||||
QTextStream bodyMessageStream(&bodyMessage);
|
||||
|
||||
// this code should be in a ViewProviderDetail if we had one. Since we do not, we have to deal
|
||||
// with a derived class here in the parent
|
||||
Gui::TaskView::TaskDialog *dlg = Gui::Control().activeDialog();
|
||||
auto* dlgDetail = dynamic_cast<TaskDlgDetail*>(dlg);
|
||||
if (dlgDetail) {
|
||||
std::string dlgDetailTarget = dlgDetail->getDetailName(); //new method
|
||||
if (getViewObject()->getNameInDocument() == dlgDetailTarget) {
|
||||
bodyMessageStream << qApp->translate("Std_Delete",
|
||||
"Close open dialog before deleting detail object");
|
||||
bodyMessage = bodyMessageStream.readLine();
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
qApp->translate("Std_Delete", "Object dependencies"), bodyMessage,
|
||||
QMessageBox::Ok);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// get child views
|
||||
auto viewSection = getViewObject()->getSectionRefs();
|
||||
auto viewDetail = getViewObject()->getDetailRefs();
|
||||
@@ -378,6 +394,7 @@ bool ViewProviderViewPart::onDelete(const std::vector<std::string> & subNames)
|
||||
if (!viewSection.empty() || !viewDetail.empty()) {
|
||||
bodyMessageStream << qApp->translate("Std_Delete",
|
||||
"You cannot delete this view because it has one or more dependent views that would become broken.");
|
||||
bodyMessage = bodyMessageStream.readLine();
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
qApp->translate("Std_Delete", "Object dependencies"), bodyMessage,
|
||||
QMessageBox::Ok);
|
||||
|
||||
Reference in New Issue
Block a user