PD: 0004582: Mulit-transformation dialog cannot be cancelled

This commit is contained in:
wmayer
2021-12-08 16:23:47 +01:00
committed by wwmayer
parent d3cad74ac6
commit 208237d2e6
5 changed files with 53 additions and 11 deletions

View File

@@ -170,6 +170,9 @@ bool TaskTransformedParameters::originalSelected(const Gui::SelectionChanges& ms
void TaskTransformedParameters::setupTransaction()
{
if (!isEnabledTransaction())
return;
auto obj = getObject();
if (!obj)
return;
@@ -185,6 +188,16 @@ void TaskTransformedParameters::setupTransaction()
transactionID = App::GetApplication().setActiveTransaction(n.c_str());
}
void TaskTransformedParameters::setEnabledTransaction(bool on)
{
enableTransaction = on;
}
bool TaskTransformedParameters::isEnabledTransaction() const
{
return enableTransaction;
}
void TaskTransformedParameters::onButtonAddFeature(bool checked)
{
if (checked) {
@@ -322,13 +335,15 @@ PartDesignGui::ViewProviderTransformed *TaskTransformedParameters::getTopTransfo
} else {
rv = TransformedView;
}
assert (rv);
return rv;
}
PartDesign::Transformed *TaskTransformedParameters::getTopTransformedObject() const {
App::DocumentObject *transform = getTopTransformedView()->getObject();
ViewProviderTransformed* vp = getTopTransformedView();
if (!vp)
return nullptr;
App::DocumentObject *transform = vp->getObject();
assert (transform->isDerivedFrom(PartDesign::Transformed::getClassTypeId()));
return static_cast<PartDesign::Transformed*>(transform);
}
@@ -344,6 +359,9 @@ PartDesign::Transformed *TaskTransformedParameters::getObject() const {
App::DocumentObject *TaskTransformedParameters::getBaseObject() const {
PartDesign::Feature* feature = getTopTransformedObject ();
if (!feature)
return nullptr;
// NOTE: getBaseObject() throws if there is no base; shouldn't happen here.
App::DocumentObject *base = feature->getBaseObject(true);
if(!base) {
@@ -355,7 +373,8 @@ App::DocumentObject *TaskTransformedParameters::getBaseObject() const {
}
App::DocumentObject* TaskTransformedParameters::getSketchObject() const {
return getTopTransformedObject()->getSketchObject();
PartDesign::Transformed* feature = getTopTransformedObject();
return feature ? feature->getSketchObject() : nullptr;
}
void TaskTransformedParameters::hideObject()