diff --git a/src/Gui/Navigation/GestureNavigationStyle.cpp b/src/Gui/Navigation/GestureNavigationStyle.cpp index a6e9d0352b..39ab6e91c4 100644 --- a/src/Gui/Navigation/GestureNavigationStyle.cpp +++ b/src/Gui/Navigation/GestureNavigationStyle.cpp @@ -959,25 +959,6 @@ SbBool GestureNavigationStyle::processSoEvent_bypass(const SoEvent* const ev) return superclass::processSoEvent(ev); } -bool GestureNavigationStyle::isDraggerUnderCursor(SbVec2s pos) -{ - SoRayPickAction rp(this->viewer->getSoRenderManager()->getViewportRegion()); - rp.setRadius(viewer->getPickRadius()); - rp.setPoint(pos); - rp.apply(this->viewer->getSoRenderManager()->getSceneGraph()); - SoPickedPoint* pick = rp.getPickedPoint(); - if (pick){ - const auto fullpath = static_cast(pick->getPath()); - for(int i = 0; i < fullpath->getLength(); ++i){ - if(fullpath->getNode(i)->isOfType(SoDragger::getClassTypeId())) - return true; - } - return false; - } else { - return false; - } -} - bool GestureNavigationStyle::is2DViewing() const { // #FIXME: detect sketch editing, ! any editing diff --git a/src/Gui/Navigation/GestureNavigationStyle.h b/src/Gui/Navigation/GestureNavigationStyle.h index a8fa4e6d0a..9f65ec8596 100644 --- a/src/Gui/Navigation/GestureNavigationStyle.h +++ b/src/Gui/Navigation/GestureNavigationStyle.h @@ -98,8 +98,6 @@ protected: // members variables int rollDir = 0; bool logging = false; -protected: //helper functions - bool isDraggerUnderCursor(SbVec2s pos); public: bool is2DViewing() const; diff --git a/src/Gui/Navigation/NavigationStyle.cpp b/src/Gui/Navigation/NavigationStyle.cpp index 1a920c140e..be3c413c28 100644 --- a/src/Gui/Navigation/NavigationStyle.cpp +++ b/src/Gui/Navigation/NavigationStyle.cpp @@ -24,6 +24,7 @@ # include # include # include +# include # include # include # include @@ -1542,6 +1543,25 @@ const std::vector& NavigationStyle::getPolygon(SelectionRole* role) con return pcPolygon; } +bool NavigationStyle::isDraggerUnderCursor(const SbVec2s pos) const +{ + SoRayPickAction rp(this->viewer->getSoRenderManager()->getViewportRegion()); + rp.setRadius(viewer->getPickRadius()); + rp.setPoint(pos); + rp.apply(this->viewer->getSoRenderManager()->getSceneGraph()); + SoPickedPoint* pick = rp.getPickedPoint(); + if (pick) { + const auto fullpath = static_cast(pick->getPath()); + for (int i = 0; i < fullpath->getLength(); ++i) { + if (fullpath->getNode(i)->isOfType(SoDragger::getClassTypeId())) { + return true; + } + } + return false; + } + return false; +} + // This method adds another point to the mouse location log, used for spin // animation calculations. void NavigationStyle::addToLog(const SbVec2s pos, const SbTime time) diff --git a/src/Gui/Navigation/NavigationStyle.h b/src/Gui/Navigation/NavigationStyle.h index 4faf708175..85a441598d 100644 --- a/src/Gui/Navigation/NavigationStyle.h +++ b/src/Gui/Navigation/NavigationStyle.h @@ -189,6 +189,8 @@ public: SbBool isSelecting() const; const std::vector& getPolygon(SelectionRole* role=nullptr) const; + bool isDraggerUnderCursor(const SbVec2s pos) const; + void setOrbitStyle(OrbitStyle style); OrbitStyle getOrbitStyle() const;