TaskTransformedParameters derives from Gui::DocumentObserver to handle deletion of view provider when clicking Cancel button
This commit is contained in:
parent
bc84e88e31
commit
27c4136f58
|
@ -370,18 +370,18 @@ unsigned TaskLinearPatternParameters::getOccurrences(void) const
|
|||
return ui->spinOccurrences->value();
|
||||
}
|
||||
|
||||
|
||||
TaskLinearPatternParameters::~TaskLinearPatternParameters()
|
||||
{
|
||||
//hide the parts coordinate system axis for selection
|
||||
PartDesign::Body * body = PartDesign::Body::findBodyOf ( getObject() );
|
||||
if(body) {
|
||||
PartDesign::Body * body = PartDesign::Body::findBodyOf(getObject());
|
||||
if (body) {
|
||||
try {
|
||||
App::Origin *origin = body->getOrigin();
|
||||
ViewProviderOrigin* vpOrigin;
|
||||
vpOrigin = static_cast<ViewProviderOrigin*>(Gui::Application::Instance->getViewProvider(origin));
|
||||
vpOrigin->resetTemporaryVisibility();
|
||||
} catch (const Base::Exception &ex) {
|
||||
}
|
||||
catch (const Base::Exception &ex) {
|
||||
Base::Console().Error ("%s\n", ex.what () );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,6 +72,12 @@ TaskTransformedParameters::TaskTransformedParameters(ViewProviderTransformed *Tr
|
|||
blockUpdate(false)
|
||||
{
|
||||
selectionMode = none;
|
||||
|
||||
if (TransformedView) {
|
||||
Gui::Document* doc = TransformedView->getDocument();
|
||||
this->attachDocument(doc);
|
||||
this->enableNotifications(DocumentObserver::Delete);
|
||||
}
|
||||
}
|
||||
|
||||
TaskTransformedParameters::TaskTransformedParameters(TaskMultiTransformParameters *parentTask)
|
||||
|
@ -92,6 +98,12 @@ TaskTransformedParameters::~TaskTransformedParameters()
|
|||
Gui::Selection().rmvSelectionGate();
|
||||
}
|
||||
|
||||
void TaskTransformedParameters::slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj)
|
||||
{
|
||||
if (TransformedView == &Obj)
|
||||
TransformedView = nullptr;
|
||||
}
|
||||
|
||||
bool TaskTransformedParameters::isViewUpdated() const
|
||||
{
|
||||
return (blockUpdate == false);
|
||||
|
@ -264,17 +276,18 @@ PartDesignGui::ViewProviderTransformed *TaskTransformedParameters::getTopTransfo
|
|||
}
|
||||
|
||||
PartDesign::Transformed *TaskTransformedParameters::getTopTransformedObject() const {
|
||||
App::DocumentObject *transform = getTopTransformedView()->getObject();
|
||||
assert (transform->isDerivedFrom(PartDesign::Transformed::getClassTypeId()));
|
||||
return static_cast<PartDesign::Transformed*>(transform);
|
||||
App::DocumentObject *transform = getTopTransformedView()->getObject();
|
||||
assert (transform->isDerivedFrom(PartDesign::Transformed::getClassTypeId()));
|
||||
return static_cast<PartDesign::Transformed*>(transform);
|
||||
}
|
||||
|
||||
|
||||
PartDesign::Transformed *TaskTransformedParameters::getObject() const {
|
||||
if (insideMultiTransform)
|
||||
return parentTask->getSubFeature();
|
||||
else
|
||||
else if (TransformedView)
|
||||
return static_cast<PartDesign::Transformed*>(TransformedView->getObject());
|
||||
else
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Part::Feature *TaskTransformedParameters::getBaseObject() const {
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#include <Gui/TaskView/TaskView.h>
|
||||
#include <Gui/Selection.h>
|
||||
#include <Gui/DocumentObserver.h>
|
||||
|
||||
#include "TaskFeatureParameters.h"
|
||||
#include "TaskTransformedMessages.h"
|
||||
|
@ -114,7 +115,9 @@ private:
|
|||
Because in the second case there is no ViewProvider, some special methods are required to
|
||||
access the underlying FeatureTransformed object in two different ways.
|
||||
**/
|
||||
class TaskTransformedParameters : public Gui::TaskView::TaskBox, public Gui::SelectionObserver
|
||||
class TaskTransformedParameters : public Gui::TaskView::TaskBox,
|
||||
public Gui::SelectionObserver,
|
||||
public Gui::DocumentObserver
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -184,6 +187,8 @@ protected:
|
|||
int getUpdateViewTimeout() const;
|
||||
|
||||
protected:
|
||||
/** Notifies when the object is about to be removed. */
|
||||
virtual void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj);
|
||||
virtual void changeEvent(QEvent *e) = 0;
|
||||
virtual void onSelectionChanged(const Gui::SelectionChanges& msg) = 0;
|
||||
virtual void clearButtons()=0;
|
||||
|
|
Loading…
Reference in New Issue
Block a user