From ae32212245d0f27ae8916aab884aaa59f3550443 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 11 Nov 2024 01:11:56 +0100 Subject: [PATCH] Assembly: Handle thrown Base::Exception in ViewProviderAssembly --- src/Mod/Assembly/Gui/ViewProviderAssembly.cpp | 21 +++++++++++++++++++ src/Mod/Assembly/Gui/ViewProviderAssembly.h | 6 +++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index 22e878c4b6..5e0764ca37 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -342,6 +342,17 @@ bool ViewProviderAssembly::keyPressed(bool pressed, int key) } bool ViewProviderAssembly::mouseMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer) +{ + try { + return tryMouseMove(cursorPos, viewer); + } + catch (const Base::Exception& e) { + Base::Console().Warning("%s\n", e.what()); + return false; + } +} + +bool ViewProviderAssembly::tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer) { if (!isInEditMode()) { return false; @@ -819,6 +830,16 @@ ViewProviderAssembly::DragMode ViewProviderAssembly::findDragMode() } void ViewProviderAssembly::initMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer) +{ + try { + tryInitMove(cursorPos, viewer); + } + catch (const Base::Exception& e) { + Base::Console().Warning("%s\n", e.what()); + } +} + +void ViewProviderAssembly::tryInitMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer) { dragMode = findDragMode(); if (dragMode == DragMode::None) { diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.h b/src/Mod/Assembly/Gui/ViewProviderAssembly.h index d7637ed2f4..bd0ff081f0 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.h +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.h @@ -130,7 +130,7 @@ public: /// is called when the Provider is in edit and a key event ocours. Only ESC ends edit. bool keyPressed(bool pressed, int key) override; /// is called when the provider is in edit and the mouse is moved - bool mouseMove(const SbVec2s& pos, Gui::View3DInventorViewer* viewer) override; + bool mouseMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer) override; /// is called when the Provider is in edit and the mouse is clicked bool mouseButtonPressed(int Button, bool pressed, @@ -226,6 +226,10 @@ public: SoSwitch* asmDraggerSwitch = nullptr; SoFieldSensor* translationSensor = nullptr; SoFieldSensor* rotationSensor = nullptr; + +private: + bool tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer); + void tryInitMove(const SbVec2s& cursorPos, Gui::View3DInventorViewer* viewer); }; } // namespace AssemblyGui