From de97e76df342ed71fe47677eaceffed8a1b7f9d4 Mon Sep 17 00:00:00 2001 From: rnv Date: Thu, 1 Sep 2016 18:24:44 +0300 Subject: [PATCH] Fix for '53116: OCC viewer is not updated by Apply in 'Scaling' dialog.' issue --- src/OCCViewer/OCCViewer_AxialScaleDlg.cxx | 12 ++++++++++-- src/OCCViewer/OCCViewer_AxialScaleDlg.h | 4 +++- src/OCCViewer/OCCViewer_ViewWindow.cxx | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/OCCViewer/OCCViewer_AxialScaleDlg.cxx b/src/OCCViewer/OCCViewer_AxialScaleDlg.cxx index 4332c0b18..6dcf0592f 100644 --- a/src/OCCViewer/OCCViewer_AxialScaleDlg.cxx +++ b/src/OCCViewer/OCCViewer_AxialScaleDlg.cxx @@ -20,6 +20,7 @@ #include "OCCViewer_AxialScaleDlg.h" #include "OCCViewer_ViewWindow.h" #include "OCCViewer_ViewPort3d.h" +#include "OCCViewer_ViewModel.h" #include @@ -39,9 +40,10 @@ \param view - view window \param parent - parent widget */ -OCCViewer_AxialScaleDlg::OCCViewer_AxialScaleDlg( OCCViewer_ViewWindow* view ) +OCCViewer_AxialScaleDlg::OCCViewer_AxialScaleDlg( OCCViewer_ViewWindow* view, OCCViewer_Viewer* model ) : QDialog( view ), - myView( view ) + myView( view ), + myModel( model ) { setWindowTitle( tr( "DLG_SCALING" ) ); setModal( false ); @@ -132,6 +134,7 @@ OCCViewer_AxialScaleDlg::OCCViewer_AxialScaleDlg( OCCViewer_ViewWindow* view ) */ OCCViewer_AxialScaleDlg::~OCCViewer_AxialScaleDlg() { + myModel = 0; } /*! @@ -163,6 +166,11 @@ bool OCCViewer_AxialScaleDlg::apply() { double aScaleFactor[3] = { m_sbXcoeff->value(), m_sbYcoeff->value(), m_sbZcoeff->value() }; myView->getViewPort()->setAxialScale( aScaleFactor[0], aScaleFactor[1], aScaleFactor[2] ); + + if( myModel && !myModel->getViewer3d().IsNull() ){ + myModel->getViewer3d()->Update(); + } + return true; } diff --git a/src/OCCViewer/OCCViewer_AxialScaleDlg.h b/src/OCCViewer/OCCViewer_AxialScaleDlg.h index 64dd99c3c..29146ca54 100644 --- a/src/OCCViewer/OCCViewer_AxialScaleDlg.h +++ b/src/OCCViewer/OCCViewer_AxialScaleDlg.h @@ -27,13 +27,14 @@ class OCCViewer_ViewWindow; class QtxDoubleSpinBox; class QPushButton; +class OCCViewer_Viewer; class OCCVIEWER_EXPORT OCCViewer_AxialScaleDlg : public QDialog { Q_OBJECT public: - OCCViewer_AxialScaleDlg( OCCViewer_ViewWindow* ); + OCCViewer_AxialScaleDlg( OCCViewer_ViewWindow* , OCCViewer_Viewer* ); ~OCCViewer_AxialScaleDlg(); void Update(); @@ -49,6 +50,7 @@ private: QtxDoubleSpinBox* m_sbYcoeff; QtxDoubleSpinBox* m_sbZcoeff; QPushButton* m_bReset; + OCCViewer_Viewer* myModel; }; #endif // OCCVIEWER_AXIALSCALEDLG_H diff --git a/src/OCCViewer/OCCViewer_ViewWindow.cxx b/src/OCCViewer/OCCViewer_ViewWindow.cxx index 3e5830b39..70eaeeee0 100644 --- a/src/OCCViewer/OCCViewer_ViewWindow.cxx +++ b/src/OCCViewer/OCCViewer_ViewWindow.cxx @@ -1925,7 +1925,7 @@ void OCCViewer_ViewWindow::onCloneView() void OCCViewer_ViewWindow::onAxialScale() { if ( !myScalingDlg ) - myScalingDlg = new OCCViewer_AxialScaleDlg( this ); + myScalingDlg = new OCCViewer_AxialScaleDlg( this , myModel ); if ( !myScalingDlg->isVisible() ) { -- 2.39.2