From f26c696500f575224354955713a4ec68c005fdd6 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 13 Oct 2024 17:42:56 +0200 Subject: [PATCH] PD: Fix crash when clicking on invalid edge in task panel Fixes #10843 --- .../PartDesign/Gui/TaskDressUpParameters.cpp | 17 ++++++++++++++++- src/Mod/PartDesign/Gui/TaskDressUpParameters.h | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp index 1aac210017..3feec5643a 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp @@ -260,12 +260,27 @@ void TaskDressUpParameters::setSelection(QListWidgetItem* current) { // highlight the selected item bool block = this->blockSelection(true); - Gui::Selection().addSelection(docName.c_str(), objName.c_str(), subName.c_str(), 0, 0, 0); + tryAddSelection(docName, objName, subName); this->blockSelection(block); } } } +void TaskDressUpParameters::tryAddSelection(const std::string& doc, + const std::string& obj, + const std::string& sub) +{ + try { + Gui::Selection().addSelection(doc.c_str(), obj.c_str(), sub.c_str(), 0, 0, 0); + } + catch (const Base::Exception& e) { + e.ReportException(); + } + catch (const Standard_Failure& e) { + Base::Console().Error("OCC error: %s\n", e.GetMessageString()); + } +} + void TaskDressUpParameters::itemClickedTimeout() { // executed after double-click time passed wasDoubleClicked = false; diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.h b/src/Mod/PartDesign/Gui/TaskDressUpParameters.h index 8173309acd..905dbca9f3 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.h +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.h @@ -100,6 +100,9 @@ protected: return nullptr; } +private: + void tryAddSelection(const std::string& doc, const std::string& obj, const std::string& sub); + protected: QWidget* proxy; QAction* deleteAction;