diff --git a/src/Mod/TechDraw/Gui/TaskDetail.cpp b/src/Mod/TechDraw/Gui/TaskDetail.cpp
index f7b1a6214f..6252627215 100644
--- a/src/Mod/TechDraw/Gui/TaskDetail.cpp
+++ b/src/Mod/TechDraw/Gui/TaskDetail.cpp
@@ -125,7 +125,7 @@ TaskDetail::TaskDetail(TechDraw::DrawViewPart* baseFeat):
this, SLOT(onYEdit()));
connect(ui->qsbRadius, SIGNAL(editingFinished()),
this, SLOT(onRadiusEdit()));
- connect(ui->aeReference, SIGNAL(editingFinished()),
+ connect(ui->leReference, SIGNAL(editingFinished()),
this, SLOT(onReferenceEdit()));
m_ghost = new QGIGhostHighlight();
@@ -198,7 +198,7 @@ TaskDetail::TaskDetail(TechDraw::DrawViewDetail* detailFeat):
this, SLOT(onYEdit()));
connect(ui->qsbRadius, SIGNAL(editingFinished()),
this, SLOT(onRadiusEdit()));
- connect(ui->aeReference, SIGNAL(editingFinished()),
+ connect(ui->leReference, SIGNAL(editingFinished()),
this, SLOT(onReferenceEdit()));
m_ghost = new QGIGhostHighlight();
@@ -280,7 +280,7 @@ void TaskDetail::setUiFromFeat()
ui->qsbX->setValue(anchor.x);
ui->qsbY->setValue(anchor.y);
ui->qsbRadius->setValue(radius);
- ui->aeReference->setText(ref);
+ ui->leReference->setText(ref);
}
//update ui point fields after tracker finishes
@@ -295,7 +295,7 @@ void TaskDetail::enableInputFields(bool b)
ui->qsbX->setEnabled(b);
ui->qsbY->setEnabled(b);
ui->qsbRadius->setEnabled(b);
- ui->aeReference->setEnabled(b);
+ ui->leReference->setEnabled(b);
}
void TaskDetail::onXEdit()
@@ -315,7 +315,7 @@ void TaskDetail::onRadiusEdit()
void TaskDetail::onReferenceEdit()
{
- updateDetail();
+ updateDetail(); //<<<<<
}
void TaskDetail::onDraggerClicked(bool b)
@@ -430,23 +430,29 @@ void TaskDetail::createDetail()
void TaskDetail::updateDetail()
{
// Base::Console().Message("TD::updateDetail()\n");
- Gui::Command::openCommand("Update Detail");
- double x = ui->qsbX->rawValue();
- double y = ui->qsbY->rawValue();
- Base::Vector3d temp(x, y, 0.0);
- TechDraw::DrawViewDetail* detailFeat = getDetailFeat();
- detailFeat->AnchorPoint.setValue(temp);
+ try {
+ Gui::Command::openCommand("Update Detail");
+ double x = ui->qsbX->rawValue();
+ double y = ui->qsbY->rawValue();
+ Base::Vector3d temp(x, y, 0.0);
+ TechDraw::DrawViewDetail* detailFeat = getDetailFeat();
+ detailFeat->AnchorPoint.setValue(temp);
- double radius = ui->qsbRadius->rawValue();
- detailFeat->Radius.setValue(radius);
- QString qRef = ui->aeReference->text();
- std::string ref = Base::Tools::toStdString(qRef);
- detailFeat->Reference.setValue(ref);
+ double radius = ui->qsbRadius->rawValue();
+ detailFeat->Radius.setValue(radius);
+ QString qRef = ui->leReference->text();
+ std::string ref = Base::Tools::toStdString(qRef);
+ detailFeat->Reference.setValue(ref);
- detailFeat->recomputeFeature();
- getBaseFeat()->requestPaint();
- Gui::Command::updateActive();
- Gui::Command::commitCommand();
+ detailFeat->recomputeFeature();
+ getBaseFeat()->requestPaint();
+ Gui::Command::updateActive();
+ Gui::Command::commitCommand();
+ }
+ catch (...) {
+ //this is probably due to appl closing while dialog is still open
+ Base::Console().Error("Task Detail - detail feature update failed.\n");
+ }
}
//***** Getters ****************************************************************
diff --git a/src/Mod/TechDraw/Gui/TaskDetail.ui b/src/Mod/TechDraw/Gui/TaskDetail.ui
index 0aa0a2fe21..6b17e707e1 100644
--- a/src/Mod/TechDraw/Gui/TaskDetail.ui
+++ b/src/Mod/TechDraw/Gui/TaskDetail.ui
@@ -7,7 +7,7 @@
0
0
304
- 244
+ 253
@@ -214,13 +214,7 @@
-
-
-
- Detail identifier
-
-
- 1
-
+
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -231,11 +225,6 @@
-
- Gui::AccelLineEdit
- QLineEdit
-
-
Gui::QuantitySpinBox
QWidget
diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp
index f083d784ff..2235daf354 100644
--- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp
+++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp
@@ -184,13 +184,15 @@ QGIView* ViewProviderDrawingView::getQView(void)
TechDraw::DrawView* dv = getViewObject();
if (dv) {
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(getViewObject()->getDocument());
- Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage());
- ViewProviderPage* dvp = dynamic_cast(vp);
- if (dvp) {
- if (dvp->getMDIViewPage()) {
- if (dvp->getMDIViewPage()->getQGVPage()) {
- qView = dynamic_cast(dvp->getMDIViewPage()->
- getQGVPage()->findQViewForDocObj(getViewObject()));
+ if (guiDoc != nullptr) {
+ Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage());
+ ViewProviderPage* dvp = dynamic_cast(vp);
+ if (dvp) {
+ if (dvp->getMDIViewPage()) {
+ if (dvp->getMDIViewPage()->getQGVPage()) {
+ qView = dynamic_cast(dvp->getMDIViewPage()->
+ getQGVPage()->findQViewForDocObj(getViewObject()));
+ }
}
}
}
@@ -249,10 +251,12 @@ MDIViewPage* ViewProviderDrawingView::getMDIViewPage() const
{
MDIViewPage* result = nullptr;
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(getViewObject()->getDocument());
- Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage()); //if not in page.views, !@#$%
- ViewProviderPage* dvp = dynamic_cast(vp);
- if (dvp) {
- result = dvp->getMDIViewPage();
+ if (guiDoc != nullptr) {
+ Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage());
+ ViewProviderPage* dvp = dynamic_cast(vp);
+ if (dvp) {
+ result = dvp->getMDIViewPage();
+ }
}
return result;
}