Fem: Fix several coverity issues:

* make SelectionChangeModes an enum class
* CID 350596: Uninitialized scalar field
* CID 350572: Uncaught exception
* CID 350647: Uncaught exception
This commit is contained in:
wmayer
2022-03-13 14:09:04 +01:00
parent b78dc894e1
commit d419b325fb
10 changed files with 47 additions and 30 deletions

View File

@@ -569,8 +569,10 @@ void TaskFemConstraintDisplacement::changeEvent(QEvent *)
void TaskFemConstraintDisplacement::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -250,8 +250,10 @@ void TaskFemConstraintFixed::changeEvent(QEvent *)
void TaskFemConstraintFixed::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -561,7 +561,7 @@ void TaskFemConstraintFluidBoundary::onButtonDirection(const bool pressed)
Q_UNUSED(pressed)
clearButtons(none);
clearButtons(SelectionChangeModes::none);
//get vector of selected objects of active document
std::vector<Gui::SelectionObject> selection = Gui::Selection().getSelectionEx();
@@ -871,8 +871,10 @@ void TaskFemConstraintFluidBoundary::changeEvent(QEvent *e)
void TaskFemConstraintFluidBoundary::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -318,7 +318,7 @@ void TaskFemConstraintForce::onButtonDirection(const bool pressed)
// sets the normal vector of the currently selecteed planar face as direction
Q_UNUSED(pressed)
clearButtons(none);
clearButtons(SelectionChangeModes::none);
auto link = getDirection(Gui::Selection().getSelectionEx());
if (!link.first) {
@@ -409,8 +409,10 @@ void TaskFemConstraintForce::changeEvent(QEvent *e)
void TaskFemConstraintForce::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -380,8 +380,10 @@ void TaskFemConstraintHeatflux::changeEvent(QEvent *e)
void TaskFemConstraintHeatflux::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -59,6 +59,7 @@ using namespace Gui;
TaskFemConstraintOnBoundary::TaskFemConstraintOnBoundary(ViewProviderFemConstraint *ConstraintView, QWidget *parent, const char* pixmapname)
: TaskFemConstraint(ConstraintView, parent, pixmapname)
, selChangeMode(SelectionChangeModes::none)
{
ConstraintView->highlightReferences(true);
}
@@ -74,12 +75,12 @@ void TaskFemConstraintOnBoundary::_addToSelection(bool checked)
{
const auto& selection = Gui::Selection().getSelectionEx(); //gets vector of selected objects of active document
if (selection.empty()) {
this->clearButtons(refAdd);
selChangeMode = refAdd;
this->clearButtons(SelectionChangeModes::refAdd);
selChangeMode = SelectionChangeModes::refAdd;
ConstraintView->highlightReferences(true);
} else {
this->addToSelection();
clearButtons(none);
clearButtons(SelectionChangeModes::none);
}
} else {
exitSelectionChangeMode();
@@ -92,12 +93,12 @@ void TaskFemConstraintOnBoundary::_removeFromSelection(bool checked)
{
const auto& selection = Gui::Selection().getSelectionEx(); //gets vector of selected objects of active document
if (selection.empty()) {
this->clearButtons(refRemove);
selChangeMode = refRemove;
this->clearButtons(SelectionChangeModes::refRemove);
selChangeMode = SelectionChangeModes::refRemove;
ConstraintView->highlightReferences(true);
} else {
this->removeFromSelection();
clearButtons(none);
clearButtons(SelectionChangeModes::none);
}
} else {
exitSelectionChangeMode();
@@ -108,15 +109,15 @@ void TaskFemConstraintOnBoundary::onSelectionChanged(const Gui::SelectionChanges
{
if (msg.Type == Gui::SelectionChanges::AddSelection) {
switch (selChangeMode) {
case refAdd:
case SelectionChangeModes::refAdd:
// TODO: Optimize to just perform actions on the newly selected item. Suggestion from PartDesign:
// ui->lw_references->addItem(makeRefText(msg.pObjectName, msg.pSubName));
this->addToSelection();
break;
case refRemove:
case SelectionChangeModes::refRemove:
this->removeFromSelection();
break;
case none:
case SelectionChangeModes::none:
return;
default:
return;
@@ -127,7 +128,7 @@ void TaskFemConstraintOnBoundary::onSelectionChanged(const Gui::SelectionChanges
void TaskFemConstraintOnBoundary::exitSelectionChangeMode()
{
selChangeMode = none;
selChangeMode = SelectionChangeModes::none;
Gui::Selection().clearSelection();
}

View File

@@ -50,7 +50,7 @@ class TaskFemConstraintOnBoundary : public TaskFemConstraint
Q_OBJECT
public:
TaskFemConstraintOnBoundary(ViewProviderFemConstraint *ConstraintView, QWidget *parent = 0, const char* pixmapname = "");
TaskFemConstraintOnBoundary(ViewProviderFemConstraint *ConstraintView, QWidget *parent = nullptr, const char* pixmapname = "");
~TaskFemConstraintOnBoundary();
protected Q_SLOTS:
@@ -60,7 +60,7 @@ protected Q_SLOTS:
virtual void removeFromSelection() = 0;
protected:
enum SelectionChangeModes {none, refAdd, refRemove};
enum class SelectionChangeModes {none, refAdd, refRemove};
virtual void onSelectionChanged(const Gui::SelectionChanges&) override;
virtual void clearButtons(const SelectionChangeModes notThis) = 0;
void exitSelectionChangeMode();

View File

@@ -266,8 +266,10 @@ void TaskFemConstraintPressure::changeEvent(QEvent *)
void TaskFemConstraintPressure::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -266,8 +266,10 @@ void TaskFemConstraintSpring::changeEvent(QEvent *)
void TaskFemConstraintSpring::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************

View File

@@ -322,8 +322,10 @@ void TaskFemConstraintTemperature::changeEvent(QEvent *)
void TaskFemConstraintTemperature::clearButtons(const SelectionChangeModes notThis)
{
if (notThis != refAdd) ui->btnAdd->setChecked(false);
if (notThis != refRemove) ui->btnRemove->setChecked(false);
if (notThis != SelectionChangeModes::refAdd)
ui->btnAdd->setChecked(false);
if (notThis != SelectionChangeModes::refRemove)
ui->btnRemove->setChecked(false);
}
//**************************************************************************