Allow DrawPage updates to be suspended
This commit is contained in:
@@ -25,6 +25,9 @@
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#ifndef _PreComp_
|
||||
#include <boost/signal.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
#endif
|
||||
|
||||
/// Here the FreeCAD includes sorted by Base,App,Gui......
|
||||
@@ -43,6 +46,7 @@
|
||||
|
||||
#include <Mod/TechDraw/App/DrawViewClip.h>
|
||||
#include <Mod/TechDraw/App/DrawPage.h>
|
||||
#include <Mod/TechDraw/App/DrawView.h>
|
||||
|
||||
#include "ViewProviderPage.h"
|
||||
#include "QGIView.h"
|
||||
@@ -61,6 +65,7 @@ ViewProviderDrawingView::ViewProviderDrawingView()
|
||||
// Do not show in property editor why? wf
|
||||
DisplayMode.setStatus(App::Property::ReadOnly,true);
|
||||
m_docReady = true;
|
||||
|
||||
}
|
||||
|
||||
ViewProviderDrawingView::~ViewProviderDrawingView()
|
||||
@@ -70,6 +75,14 @@ ViewProviderDrawingView::~ViewProviderDrawingView()
|
||||
void ViewProviderDrawingView::attach(App::DocumentObject *pcFeat)
|
||||
{
|
||||
ViewProviderDocumentObject::attach(pcFeat);
|
||||
|
||||
auto bnd = boost::bind(&ViewProviderDrawingView::onGuiRepaint, this, _1);
|
||||
auto feature = getViewObject();
|
||||
if (feature != nullptr) {
|
||||
connectGuiRepaint = feature->signalGuiPaint.connect(bnd);
|
||||
} else {
|
||||
Base::Console().Log("VPDV::attach has no Feature!\n");
|
||||
}
|
||||
}
|
||||
|
||||
void ViewProviderDrawingView::setDisplayMode(const char* ModeName)
|
||||
@@ -137,10 +150,6 @@ void ViewProviderDrawingView::hide(void)
|
||||
|
||||
QGIView* ViewProviderDrawingView::getQView(void)
|
||||
{
|
||||
//TODO: vp can get its MDIView with 1 call getActiveView()?
|
||||
// instead of going back to App side an up tree and back to Gui?
|
||||
//MDIVPage* mdivp = static_cast<MDIVPage*>(getActiveView());
|
||||
//qView = mdivp->getQGVPage()->findQViewForDocObj(getViewObject());
|
||||
QGIView *qView = nullptr;
|
||||
if (m_docReady){
|
||||
TechDraw::DrawView* dv = getViewObject();
|
||||
@@ -185,12 +194,12 @@ void ViewProviderDrawingView::finishRestoring()
|
||||
void ViewProviderDrawingView::updateData(const App::Property* prop)
|
||||
{
|
||||
if (prop == &(getViewObject()->Rotation) ) {
|
||||
// redraw QGIVP
|
||||
QGIView* qgiv = getQView();
|
||||
if (qgiv) {
|
||||
qgiv->updateView(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Gui::ViewProviderDocumentObject::updateData(prop);
|
||||
}
|
||||
|
||||
@@ -216,6 +225,23 @@ MDIViewPage* ViewProviderDrawingView::getMDIViewPage() const
|
||||
return result;
|
||||
}
|
||||
|
||||
void ViewProviderDrawingView::onGuiRepaint(const TechDraw::DrawView* dv)
|
||||
{
|
||||
if (dv == getViewObject()) {
|
||||
QGIView* qgiv = getQView();
|
||||
if (qgiv) {
|
||||
qgiv->updateView(true);
|
||||
}
|
||||
// } else {
|
||||
// auto vo = getViewObject();
|
||||
// auto page = vo->findParentPage();
|
||||
// if (page != nullptr) {
|
||||
// page->requestPaint() ;
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
TechDraw::DrawView* ViewProviderDrawingView::getViewObject() const
|
||||
{
|
||||
return dynamic_cast<TechDraw::DrawView*>(pcObject);
|
||||
|
||||
Reference in New Issue
Block a user