From 939506007dcdb8a60fa458eb3d3de2129e3e164e Mon Sep 17 00:00:00 2001 From: Bas Ruigrok Date: Wed, 4 Dec 2024 21:49:15 +0100 Subject: [PATCH] Gui: Fix Blender and Revit navigation issues with shift key in sketcher --- src/Gui/BlenderNavigationStyle.cpp | 9 +++++++-- src/Gui/RevitNavigationStyle.cpp | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Gui/BlenderNavigationStyle.cpp b/src/Gui/BlenderNavigationStyle.cpp index 4db964ae5a..6988b34caa 100644 --- a/src/Gui/BlenderNavigationStyle.cpp +++ b/src/Gui/BlenderNavigationStyle.cpp @@ -197,13 +197,11 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) const auto * const event = (const SoLocation2Event *) ev; if (this->currentmode == NavigationStyle::ZOOMING) { this->zoomByCursor(posn, prevnormalized); - newmode = NavigationStyle::SELECTION; processed = true; } else if (this->currentmode == NavigationStyle::PANNING) { float ratio = vp.getViewportAspectRatio(); panCamera(viewer->getSoRenderManager()->getCamera(), ratio, this->panningplane, posn, prevnormalized); - newmode = NavigationStyle::SELECTION; processed = true; } else if (this->currentmode == NavigationStyle::DRAGGING) { @@ -277,6 +275,13 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) break; default: + // Reset mode to IDLE when button 3 is released + // This stops the PANNING when button 3 is released but SHIFT is still pressed + // This stops the ZOOMING when button 3 is released but CTRL is still pressed + if ((curmode == NavigationStyle::PANNING || curmode == NavigationStyle::ZOOMING) + && !this->button3down) { + newmode = NavigationStyle::IDLE; + } break; } diff --git a/src/Gui/RevitNavigationStyle.cpp b/src/Gui/RevitNavigationStyle.cpp index 3bbea4d7a7..af4e9b114e 100644 --- a/src/Gui/RevitNavigationStyle.cpp +++ b/src/Gui/RevitNavigationStyle.cpp @@ -272,12 +272,12 @@ SbBool RevitNavigationStyle::processSoEvent(const SoEvent * const ev) break; default: - // Reset mode to SELECTION when button 3 is released + // Reset mode to IDLE when button 3 is released // This stops the DRAGGING when button 3 is released but SHIFT is still pressed // This stops the ZOOMING when button 3 is released but CTRL is still pressed if ((curmode == NavigationStyle::DRAGGING || curmode == NavigationStyle::ZOOMING) && !this->button3down) { - newmode = NavigationStyle::SELECTION; + newmode = NavigationStyle::IDLE; } break; }