From 601bd29b2da16e1f4663afef021a5418a84fb107 Mon Sep 17 00:00:00 2001 From: mrlukeparry Date: Tue, 18 Oct 2011 21:55:29 +0000 Subject: [PATCH] Fixed the dreaded infinite loop bug. Implemented a few methods for SoZoomTranslate to ensure that it works correctly in all cases. git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5036 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d --- src/Mod/Sketcher/Gui/SoZoomTranslation.cpp | 17 ++++++++++++----- src/Mod/Sketcher/Gui/SoZoomTranslation.h | 2 ++ src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 2 +- src/Mod/Sketcher/Gui/ViewProviderSketch.h | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp b/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp index 68186105d8..3a89fd213f 100644 --- a/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp +++ b/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp @@ -82,11 +82,8 @@ SoZoomTranslation::SoZoomTranslation() } void SoZoomTranslation::GLRender(SoGLRenderAction * action) -{ - SoState *state = action->getState(); - const SbViewVolume & vv = SoViewVolumeElement::get(state); - - this->doAction((SoAction *)action); +{ + SoZoomTranslation::doAction((SoAction *)action); } // Doc in superclass. @@ -135,6 +132,16 @@ void SoZoomTranslation::getMatrix(SoGetMatrixAction * action) } +void SoZoomTranslation::callback(SoCallbackAction * action) +{ + SoZoomTranslation::doAction((SoAction *)action); +} + +void SoZoomTranslation::getBoundingBox(SoGetBoundingBoxAction * action) +{ + SoZoomTranslation::doAction((SoAction *)action); +} + void SoZoomTranslation::pick(SoPickAction * action) { SoZoomTranslation::doAction((SoAction *)action); diff --git a/src/Mod/Sketcher/Gui/SoZoomTranslation.h b/src/Mod/Sketcher/Gui/SoZoomTranslation.h index 62afbd0a91..40e022c702 100644 --- a/src/Mod/Sketcher/Gui/SoZoomTranslation.h +++ b/src/Mod/Sketcher/Gui/SoZoomTranslation.h @@ -46,6 +46,8 @@ protected: virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action); virtual void getMatrix(SoGetMatrixAction * action); virtual void GLRender(SoGLRenderAction *action); + virtual void getBoundingBox(SoGetBoundingBoxAction * action); + virtual void callback(SoCallbackAction * action); virtual void pick(SoPickAction * action); private: diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 678c77d61c..f29ba850c8 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -991,7 +991,7 @@ bool ViewProviderSketch::isConstraintAtPosition(const Base::Vector3d &constrPos, } Base::Vector3d ViewProviderSketch::seekConstraintPosition(const Base::Vector3d &suggestedPos, - const Base::Vector3d &dir, int step, + const Base::Vector3d &dir, float step, const SoNode *constraint) { int multiplier = 0; diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index fe31b7c5c2..d0fa7d7e5d 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -141,7 +141,7 @@ public: bool isConstraintAtPosition(const Base::Vector3d &constrPos, const SoNode *constraint); /// finds a free position for placing a constraint icon Base::Vector3d seekConstraintPosition(const Base::Vector3d &suggestedPos, - const Base::Vector3d &dir, int step, + const Base::Vector3d &dir, float step, const SoNode *constraint); float getScaleFactor();