Skip to content

Commit

Permalink
[TD]fix RTA edit when no MDI
Browse files Browse the repository at this point in the history
  • Loading branch information
WandererFan committed Feb 16, 2020
1 parent d0215f7 commit 3988824
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 40 deletions.
92 changes: 54 additions & 38 deletions src/Mod/TechDraw/Gui/TaskRichAnno.cpp
Expand Up @@ -83,39 +83,50 @@ TaskRichAnno::TaskRichAnno(TechDrawGui::ViewProviderRichAnno* annoVP) :
m_textDialog(nullptr),
m_rte(nullptr)
{
// Base::Console().Message("TRA::TRA() - edit\n");
if (m_annoVP == nullptr) {
//should be caught in CMD caller
Base::Console().Error("TaskRichAnno - bad parameters. Can not proceed.\n");
return;
}
ui->setupUi(this);


m_annoFeat = m_annoVP->getFeature();

m_basePage = m_annoFeat->findParentPage();
if ( m_basePage == nullptr ) {
Base::Console().Error("TaskRichAnno - bad parameters (2). Can not proceed.\n");
return;
}

//m_baseFeat can be null
App::DocumentObject* obj = m_annoFeat->AnnoParent.getValue();
if (obj != nullptr) {
if ( obj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
m_baseFeat = static_cast<TechDraw::DrawView*>(m_annoFeat->AnnoParent.getValue());
}
}
m_basePage = m_annoFeat->findParentPage();
if ( m_basePage == nullptr ) {
Base::Console().Error("TaskRichAnno - bad parameters (2). Can not proceed.\n");
return;

Gui::Document* activeGui = Gui::Application::Instance->getDocument(m_basePage->getDocument());
Gui::ViewProvider* vp = activeGui->getViewProvider(m_basePage);
ViewProviderPage* dvp = static_cast<ViewProviderPage*>(vp);

m_mdi = dvp->getMDIViewPage();
m_qgParent = nullptr;
m_haveMdi = true;
if (m_mdi != nullptr) {
m_view = m_mdi->getQGVPage();
if (m_baseFeat != nullptr) {
m_qgParent = m_view->findQViewForDocObj(m_baseFeat);
}
} else {
m_haveMdi = false;
}

setUiEdit();
// m_title = QObject::tr("Rich text editor");

m_mdi = m_annoVP->getMDIViewPage();
m_scene = m_mdi->m_scene;
m_view = m_mdi->getQGVPage();
if (m_baseFeat != nullptr) {
m_qgParent = m_view->findQViewForDocObj(m_baseFeat);
}

m_saveContextPolicy = m_mdi->contextMenuPolicy();
ui->setupUi(this);

m_title = QObject::tr("Rich text editor");
setUiEdit();

m_attachPoint = Rez::guiX(Base::Vector3d(m_annoFeat->X.getValue(),
-m_annoFeat->Y.getValue(),
Expand All @@ -139,27 +150,30 @@ TaskRichAnno::TaskRichAnno(TechDraw::DrawView* baseFeat,
m_textDialog(nullptr),
m_rte(nullptr)
{
// Base::Console().Message("TRA::TRA() - create\n");
if (m_basePage == nullptr) {
//should be caught in CMD caller
Base::Console().Error("TaskRichAnno - bad parameters. Can not proceed.\n");
return;
}


ui->setupUi(this);
m_title = QObject::tr("Rich text creator");

Gui::Document* activeGui = Gui::Application::Instance->getDocument(m_basePage->getDocument());
Gui::ViewProvider* vp = activeGui->getViewProvider(m_basePage);
ViewProviderPage* vpp = static_cast<ViewProviderPage*>(vp);
m_mdi = vpp->getMDIViewPage();
m_scene = m_mdi->m_scene;
m_view = m_mdi->getQGVPage();
if (baseFeat != nullptr) {
m_qgParent = m_view->findQViewForDocObj(baseFeat);
ViewProviderPage* dvp = static_cast<ViewProviderPage*>(vp);

m_qgParent = nullptr;
m_haveMdi = true;
m_mdi = dvp->getMDIViewPage();
if (m_mdi != nullptr) {
m_view = m_mdi->getQGVPage();
if (baseFeat != nullptr) {
m_qgParent = m_view->findQViewForDocObj(baseFeat);
}
} else {
m_haveMdi = false;
}

m_saveContextPolicy = m_mdi->contextMenuPolicy();
ui->setupUi(this);
m_title = QObject::tr("Rich text creator");

setUiPrimary();

Expand Down Expand Up @@ -346,10 +360,16 @@ void TaskRichAnno::createAnnoFeature()
if (obj->isDerivedFrom(TechDraw::DrawRichAnno::getClassTypeId())) {
m_annoFeat = static_cast<TechDraw::DrawRichAnno*>(obj);
commonFeatureUpdate();
QPointF qTemp = calcTextStartPos(m_annoFeat->getScale());
Base::Vector3d vTemp(qTemp.x(), qTemp.y());
m_annoFeat->X.setValue(Rez::appX(vTemp.x));
m_annoFeat->Y.setValue(Rez::appX(vTemp.y));
if (m_haveMdi) {
QPointF qTemp = calcTextStartPos(m_annoFeat->getScale());
Base::Vector3d vTemp(qTemp.x(), qTemp.y());
m_annoFeat->X.setValue(Rez::appX(vTemp.x));
m_annoFeat->Y.setValue(Rez::appX(vTemp.y));
} else {
//if we don't have a mdi, we can't calculate start position, so just put it mid-page
m_annoFeat->X.setValue(m_basePage->getPageWidth()/2.0);
m_annoFeat->Y.setValue(m_basePage->getPageHeight()/2.0);
}
}

if (m_annoFeat != nullptr) {
Expand Down Expand Up @@ -463,7 +483,7 @@ QPointF TaskRichAnno::calcTextStartPos(double scale)
QPointF result(w,h);
return result;
} else {
Base::Console().Message("TRA::calcStartPos - no m_basePage\n");
Base::Console().Message("TRA::calcStartPos - no m_basePage\n"); //shouldn't happen. caught elsewhere
}
}

Expand Down Expand Up @@ -518,7 +538,7 @@ bool TaskRichAnno::accept()
} else {
createAnnoFeature();
}
m_mdi->setContextMenuPolicy(m_saveContextPolicy);
// m_mdi->setContextMenuPolicy(m_saveContextPolicy);
Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()");

return true;
Expand All @@ -537,10 +557,6 @@ bool TaskRichAnno::reject()
if (!doc) {
return false;
}

if (m_mdi != nullptr) {
m_mdi->setContextMenuPolicy(m_saveContextPolicy);
}
if (getCreateMode() &&
(m_annoFeat != nullptr) ) {
removeFeature();
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/TechDraw/Gui/TaskRichAnno.h
Expand Up @@ -107,7 +107,6 @@ protected Q_SLOTS:
bool blockUpdate;

MDIViewPage* m_mdi;
QGraphicsScene* m_scene;
QGVPage* m_view;
ViewProviderRichAnno* m_annoVP;
TechDraw::DrawView* m_baseFeat;
Expand All @@ -131,6 +130,7 @@ protected Q_SLOTS:
QDialog* m_textDialog;
MRichTextEdit* m_rte;
QString m_title;
bool m_haveMdi;
};

class TaskDlgRichAnno : public Gui::TaskView::TaskDialog
Expand Down
1 change: 0 additions & 1 deletion src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp
Expand Up @@ -94,7 +94,6 @@ bool ViewProviderRichAnno::setEdit(int ModNum)
if (Gui::Control().activeDialog()) { //TaskPanel already open!
return false;
}
// clear the selection (convenience)
Gui::Selection().clearSelection();
Gui::Control().showDialog(new TaskDlgRichAnno(this));
return true;
Expand Down

0 comments on commit 3988824

Please sign in to comment.