From 5dfc061d499fa441703364e588d73a5ccdf1fe5a Mon Sep 17 00:00:00 2001 From: marioalexis Date: Sat, 3 Oct 2020 00:57:57 -0300 Subject: [PATCH] [PartDesign] Prevent crash when pressing delete key without feature selected to remove in linear and polar pattern dialog --- src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp | 8 +++++++- src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp index 07bd468428..fa671abd87 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp @@ -366,9 +366,15 @@ void TaskLinearPatternParameters::onFeatureDeleted(void) PartDesign::Transformed* pcTransformed = getObject(); std::vector originals = pcTransformed->Originals.getValues(); originals.erase(originals.begin() + ui->listWidgetFeatures->currentRow()); + int currentRow = ui->listWidgetFeatures->currentRow(); + if (currentRow < 0) { + Base::Console().Error("PartDesign LinearPattern: No feature selected for removing.\n"); + return; //no current row selected + } + originals.erase(originals.begin() + currentRow); setupTransaction(); pcTransformed->Originals.setValues(originals); - ui->listWidgetFeatures->model()->removeRow(ui->listWidgetFeatures->currentRow()); + ui->listWidgetFeatures->model()->removeRow(currentRow); recomputeFeature(); } diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp index 5471b29fc0..94e7098ef8 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp @@ -357,9 +357,15 @@ void TaskPolarPatternParameters::onFeatureDeleted(void) PartDesign::Transformed* pcTransformed = getObject(); std::vector originals = pcTransformed->Originals.getValues(); originals.erase(originals.begin() + ui->listWidgetFeatures->currentRow()); + int currentRow = ui->listWidgetFeatures->currentRow(); + if (currentRow < 0) { + Base::Console().Error("PartDesign PolarPattern: No feature selected for removing.\n"); + return; //no current row selected + } + originals.erase(originals.begin() + currentRow); setupTransaction(); pcTransformed->Originals.setValues(originals); - ui->listWidgetFeatures->model()->removeRow(ui->listWidgetFeatures->currentRow()); + ui->listWidgetFeatures->model()->removeRow(currentRow); recomputeFeature(); }