From 0b8ac9e5b9998ecd9f1d5cc5a9aa2ba8ee16adca Mon Sep 17 00:00:00 2001 From: Bas Ruigrok Date: Tue, 4 Jun 2024 21:56:10 +0200 Subject: [PATCH] Gui: Fix rotation mode for MayaGesture style --- src/Gui/MayaGestureNavigationStyle.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Gui/MayaGestureNavigationStyle.cpp b/src/Gui/MayaGestureNavigationStyle.cpp index fc9353016d06..75c23943963d 100644 --- a/src/Gui/MayaGestureNavigationStyle.cpp +++ b/src/Gui/MayaGestureNavigationStyle.cpp @@ -448,7 +448,7 @@ SbBool MayaGestureNavigationStyle::processSoEvent(const SoEvent * const ev) // start DRAGGING mode (orbit) // if not pressing left mouse button then it assumes is right mouse button and starts ZOOMING mode - setRotationCenter(getFocalPoint()); + saveCursorPosition(ev); setViewingMode(this->button1down ? NavigationStyle::DRAGGING : NavigationStyle::ZOOMING); processed = true; } else { @@ -477,7 +477,7 @@ SbBool MayaGestureNavigationStyle::processSoEvent(const SoEvent * const ev) processed = true; } else if (type.isDerivedFrom(SoGesturePinchEvent::getClassTypeId())) { setupPanningPlane(viewer->getSoRenderManager()->getCamera());//set up panning plane - setRotationCenter(getFocalPoint()); + saveCursorPosition(ev); setViewingMode(NavigationStyle::DRAGGING); processed = true; } //all other gestures - ignore! @@ -504,7 +504,12 @@ SbBool MayaGestureNavigationStyle::processSoEvent(const SoEvent * const ev) case SoMouseButtonEvent::BUTTON3: // allows to release button3 into SELECTION mode if(comboAfter & BUTTON1DOWN || comboAfter & BUTTON2DOWN) { //don't leave navigation till all buttons have been released - setRotationCenter(getFocalPoint()); + if (comboAfter & BUTTON1DOWN && comboAfter & BUTTON2DOWN) { + setRotationCenter(getFocalPoint()); + } + else { + saveCursorPosition(ev); + } setViewingMode((comboAfter & BUTTON1DOWN) ? NavigationStyle::DRAGGING : NavigationStyle::PANNING); processed = true; } else { //all buttons are released