From 5640f91b68a5b69c6a63676253562190ee319309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20St=C3=B8ren?= Date: Fri, 26 Jan 2018 14:33:32 +0100 Subject: [PATCH] #2412 2D Navigation only for Intersectino Views --- .../ProjectDataModel/Rim2dIntersectionView.cpp | 1 + .../UserInterface/RiuCadNavigation.cpp | 2 +- .../UserInterface/RiuGeoQuestNavigation.cpp | 2 +- .../UserInterface/RiuRmsNavigation.cpp | 2 +- ApplicationCode/UserInterface/RiuViewer.cpp | 15 ++++++++++++++- ApplicationCode/UserInterface/RiuViewer.h | 2 ++ Fwk/AppFwk/cafViewer/cafCadNavigation.cpp | 2 +- Fwk/AppFwk/cafViewer/cafCeetronPlusNavigation.cpp | 2 +- .../cafViewer/cafTrackBallBasedNavigation.cpp | 1 + .../cafViewer/cafTrackBallBasedNavigation.h | 3 +++ 10 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/Rim2dIntersectionView.cpp b/ApplicationCode/ProjectDataModel/Rim2dIntersectionView.cpp index 09c144a97b..da58fa2922 100644 --- a/ApplicationCode/ProjectDataModel/Rim2dIntersectionView.cpp +++ b/ApplicationCode/ProjectDataModel/Rim2dIntersectionView.cpp @@ -340,6 +340,7 @@ void Rim2dIntersectionView::resetLegendsInViewer() m_viewer->showInfoText(false); m_viewer->setMainScene(new cvf::Scene()); + m_viewer->enableNavigationRotation(false); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/UserInterface/RiuCadNavigation.cpp b/ApplicationCode/UserInterface/RiuCadNavigation.cpp index 721b1ad323..d9f7cdf413 100644 --- a/ApplicationCode/UserInterface/RiuCadNavigation.cpp +++ b/ApplicationCode/UserInterface/RiuCadNavigation.cpp @@ -59,7 +59,7 @@ bool RiuCadNavigation::handleInputEvent(QInputEvent* inputEvent) int translatedMousePosX, translatedMousePosY; cvfEventPos(me->x(), me->y(), &translatedMousePosX, &translatedMousePosY); - if (me->button() == Qt::MidButton && me->modifiers() == Qt::NoModifier) + if (me->button() == Qt::MidButton && me->modifiers() == Qt::NoModifier && isRotationEnabled()) { cvf::HitItemCollection hic; bool hitSomething = m_viewer->rayPick( me->x(), me->y(), &hic); diff --git a/ApplicationCode/UserInterface/RiuGeoQuestNavigation.cpp b/ApplicationCode/UserInterface/RiuGeoQuestNavigation.cpp index 27112bb00d..e9eafe6e34 100644 --- a/ApplicationCode/UserInterface/RiuGeoQuestNavigation.cpp +++ b/ApplicationCode/UserInterface/RiuGeoQuestNavigation.cpp @@ -59,7 +59,7 @@ bool RiuGeoQuestNavigation::handleInputEvent(QInputEvent* inputEvent) int translatedMousePosX, translatedMousePosY; cvfEventPos(me->x(), me->y(), &translatedMousePosX, &translatedMousePosY); - if (me->button() == Qt::LeftButton) + if (me->button() == Qt::LeftButton && isRotationEnabled()) { cvf::HitItemCollection hic; bool hitSomething = m_viewer->rayPick(me->x(), me->y(), &hic); diff --git a/ApplicationCode/UserInterface/RiuRmsNavigation.cpp b/ApplicationCode/UserInterface/RiuRmsNavigation.cpp index 2e3e0faafd..1b80a97535 100644 --- a/ApplicationCode/UserInterface/RiuRmsNavigation.cpp +++ b/ApplicationCode/UserInterface/RiuRmsNavigation.cpp @@ -59,7 +59,7 @@ bool RiuRmsNavigation::handleInputEvent(QInputEvent* inputEvent) int translatedMousePosX, translatedMousePosY; cvfEventPos(me->x(), me->y(), &translatedMousePosX, &translatedMousePosY); - if (me->button() == Qt::MidButton) + if (me->button() == Qt::MidButton && isRotationEnabled()) { cvf::HitItemCollection hic; bool hitSomething = m_viewer->rayPick(me->x(), me->y(), &hic); diff --git a/ApplicationCode/UserInterface/RiuViewer.cpp b/ApplicationCode/UserInterface/RiuViewer.cpp index 4b986c0ef1..aca6e1eba7 100644 --- a/ApplicationCode/UserInterface/RiuViewer.cpp +++ b/ApplicationCode/UserInterface/RiuViewer.cpp @@ -79,7 +79,7 @@ const double RI_MIN_NEARPLANE_DISTANCE = 0.1; /// //-------------------------------------------------------------------------------------------------- RiuViewer::RiuViewer(const QGLFormat& format, QWidget* parent) -: caf::Viewer(format, parent) +: caf::Viewer(format, parent), m_isNavigationRotationEnabled(true) { cvf::Font* standardFont = RiaApplication::instance()->standardFont(); m_axisCross = new cvf::OverlayAxisCross(m_mainCamera.p(), standardFont); @@ -589,6 +589,17 @@ void RiuViewer::addColorLegendToBottomLeftCorner(cvf::OverlayItem* legend) } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RiuViewer::enableNavigationRotation(bool enable) +{ + auto tbNavPol = dynamic_cast(m_navigationPolicy.p()); + m_isNavigationRotationEnabled = enable; + + if (tbNavPol) tbNavPol->enableRotation(m_isNavigationRotationEnabled); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -616,6 +627,8 @@ void RiuViewer::updateNavigationPolicy() CVF_ASSERT(0); break; } + + enableNavigationRotation(m_isNavigationRotationEnabled); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/UserInterface/RiuViewer.h b/ApplicationCode/UserInterface/RiuViewer.h index 35a8b6926e..70545ae480 100644 --- a/ApplicationCode/UserInterface/RiuViewer.h +++ b/ApplicationCode/UserInterface/RiuViewer.h @@ -91,6 +91,7 @@ public: void removeAllColorLegends(); void addColorLegendToBottomLeftCorner(cvf::OverlayItem* legend); + void enableNavigationRotation(bool disable); void updateNavigationPolicy(); virtual void navigationPolicyUpdate(); // Override of caf::Viewer::navigationPolicyUpdate() @@ -156,5 +157,6 @@ private: RivGridBoxGenerator* m_gridBoxGenerator; cvf::Vec3d m_cursorPositionDomainCoords; + bool m_isNavigationRotationEnabled; }; diff --git a/Fwk/AppFwk/cafViewer/cafCadNavigation.cpp b/Fwk/AppFwk/cafViewer/cafCadNavigation.cpp index 9c56d13f07..ae4542ea73 100644 --- a/Fwk/AppFwk/cafViewer/cafCadNavigation.cpp +++ b/Fwk/AppFwk/cafViewer/cafCadNavigation.cpp @@ -77,7 +77,7 @@ bool caf::CadNavigation::handleInputEvent(QInputEvent* inputEvent) int translatedMousePosX, translatedMousePosY; cvfEventPos(me->x(), me->y(), &translatedMousePosX, &translatedMousePosY); - if (me->button() == Qt::MidButton && me->modifiers() == Qt::NoModifier) + if (me->button() == Qt::MidButton && me->modifiers() == Qt::NoModifier && isRotationEnabled()) { cvf::HitItemCollection hic; bool hitSomething = m_viewer->rayPick( me->x(), me->y(), &hic); diff --git a/Fwk/AppFwk/cafViewer/cafCeetronPlusNavigation.cpp b/Fwk/AppFwk/cafViewer/cafCeetronPlusNavigation.cpp index 5a7bcd780e..ace62919f8 100644 --- a/Fwk/AppFwk/cafViewer/cafCeetronPlusNavigation.cpp +++ b/Fwk/AppFwk/cafViewer/cafCeetronPlusNavigation.cpp @@ -77,7 +77,7 @@ bool caf::CeetronPlusNavigation::handleInputEvent(QInputEvent* inputEvent) int translatedMousePosX, translatedMousePosY; cvfEventPos(me->x(), me->y(), &translatedMousePosX, &translatedMousePosY); - if (me->button() == Qt::RightButton) + if (me->button() == Qt::RightButton && isRotationEnabled()) { cvf::HitItemCollection hic; bool hitSomething = m_viewer->rayPick( me->x(), me->y(), &hic); diff --git a/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.cpp b/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.cpp index 48c9be65f5..7352ff7994 100644 --- a/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.cpp +++ b/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.cpp @@ -78,6 +78,7 @@ void caf::TrackBallBasedNavigation::init() m_trackball = new cvf::ManipulatorTrackball; m_trackball->setCamera(m_viewer->mainCamera()); m_isRotCenterInitialized = false; + m_isRotationEnabled = true; m_hasMovedMouseDuringNavigation = false; m_isNavigating = false; m_isZooming = false; diff --git a/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.h b/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.h index 0157e48b4f..a27596fb12 100644 --- a/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.h +++ b/Fwk/AppFwk/cafViewer/cafTrackBallBasedNavigation.h @@ -59,6 +59,7 @@ public: TrackBallBasedNavigation(); virtual ~TrackBallBasedNavigation(); void enableEventEating(bool enable) { m_consumeEvents = enable; } + void enableRotation(bool enable) { m_isRotationEnabled = enable; } protected: // General navigation policy overrides @@ -88,9 +89,11 @@ protected: int m_lastPosY; bool isSupposedToConsumeEvents() { return m_consumeEvents; } + bool isRotationEnabled() { return m_isRotationEnabled; } private: bool m_consumeEvents; + bool m_isRotationEnabled; }; } // End namespace caf