From 5d82ef08c9e02fd03bb51e6121c9639be137d960 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 12 Oct 2020 18:56:12 +0200 Subject: [PATCH] PartDesign: [skip ci] Prevent crash when pressing delete key without feature selected to remove in mirror and scale pattern dialog --- src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp | 9 +++++++-- src/Mod/PartDesign/Gui/TaskScaledParameters.cpp | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp index c614457b60..74533f9efa 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp @@ -280,10 +280,15 @@ void TaskMirroredParameters::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 MirroredPattern: 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/TaskScaledParameters.cpp b/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp index d0f39c5d37..3bd6bb84c4 100644 --- a/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp @@ -219,9 +219,14 @@ void TaskScaledParameters::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 ScaledPattern: No feature selected for removing.\n"); + return; //no current row selected + } + originals.erase(originals.begin() + currentRow); pcTransformed->Originals.setValues(originals); - ui->listWidgetFeatures->model()->removeRow(ui->listWidgetFeatures->currentRow()); + ui->listWidgetFeatures->model()->removeRow(currentRow); recomputeFeature(); }