[TechDraw] Checkable menu item for Turn View Frames On/Off - segfault fix
This commit is contained in:
@@ -47,6 +47,7 @@
|
||||
#include <Mod/TechDraw/App/DrawViewPart.h>
|
||||
|
||||
#include "DrawGuiUtil.h"
|
||||
#include "MDIViewPage.h"
|
||||
#include "TaskGeomHatch.h"
|
||||
#include "TaskHatch.h"
|
||||
#include "ViewProviderGeomHatch.h"
|
||||
@@ -310,21 +311,18 @@ Gui::Action *CmdTechDrawToggleFrame::createAction()
|
||||
void CmdTechDrawToggleFrame::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
TechDraw::DrawPage* page = DrawGuiUtil::findPage(this);
|
||||
if (!page) {
|
||||
return;
|
||||
}
|
||||
std::string PageName = page->getNameInDocument();
|
||||
|
||||
Gui::Document* activeGui = Gui::Application::Instance->getDocument(page->getDocument());
|
||||
Gui::ViewProvider* vp = activeGui->getViewProvider(page);
|
||||
ViewProviderPage* vpp = dynamic_cast<ViewProviderPage*>(vp);
|
||||
|
||||
if (!vpp) {
|
||||
auto mvp = dynamic_cast<MDIViewPage *>(Gui::getMainWindow()->activeWindow());
|
||||
if (!mvp) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No TechDraw Page"),
|
||||
QObject::tr("Need a TechDraw Page for this command"));
|
||||
return;
|
||||
}
|
||||
|
||||
ViewProviderPage* vpp = mvp->getViewProviderPage();
|
||||
if (!vpp) {
|
||||
return;
|
||||
}
|
||||
vpp->toggleFrameState();
|
||||
|
||||
Gui::Action *action = this->getAction();
|
||||
@@ -335,22 +333,15 @@ void CmdTechDrawToggleFrame::activated(int iMsg)
|
||||
|
||||
bool CmdTechDrawToggleFrame::isActive()
|
||||
{
|
||||
TechDraw::DrawPage* page = DrawGuiUtil::findPage(this);
|
||||
if (!page) {
|
||||
auto mvp = dynamic_cast<MDIViewPage *>(Gui::getMainWindow()->activeWindow());
|
||||
if (!mvp) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!DrawGuiUtil::needView(this, false)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Gui::Document *activeGui = Gui::Application::Instance->getDocument(page->getDocument());
|
||||
ViewProviderPage *vpp = dynamic_cast<ViewProviderPage *>(activeGui->getViewProvider(page));
|
||||
if (vpp) {
|
||||
Gui::Action *action = this->getAction();
|
||||
if (action) {
|
||||
action->setChecked(!vpp->getFrameState(), true);
|
||||
}
|
||||
ViewProviderPage* vpp = mvp->getViewProviderPage();
|
||||
Gui::Action *action = this->getAction();
|
||||
if (action) {
|
||||
action->setChecked(vpp && !vpp->getFrameState(), true);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user