summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/equipment.c2
-rw-r--r--core/equipment.h3
-rw-r--r--qt-models/weightmodel.cpp5
3 files changed, 7 insertions, 3 deletions
diff --git a/core/equipment.c b/core/equipment.c
index 05e71cee5..323bab3d8 100644
--- a/core/equipment.c
+++ b/core/equipment.c
@@ -127,7 +127,7 @@ void add_weightsystem_description(const weightsystem_t *weightsystem)
weightsystem_t clone_weightsystem(weightsystem_t ws)
{
- weightsystem_t res = { ws.weight, copy_string(ws.description) };
+ weightsystem_t res = { ws.weight, copy_string(ws.description), ws.auto_filled };
return res;
}
diff --git a/core/equipment.h b/core/equipment.h
index 7df54ad50..463040b6a 100644
--- a/core/equipment.h
+++ b/core/equipment.h
@@ -50,9 +50,10 @@ typedef struct
{
weight_t weight;
const char *description; /* "integrated", "belt", "ankle" */
+ bool auto_filled; /* weight was automatically derived from the type */
} weightsystem_t;
-static const weightsystem_t empty_weightsystem = { { 0 }, 0 };
+static const weightsystem_t empty_weightsystem = { { 0 }, 0, false };
/* Table of weightsystems. Attention: this stores weightsystems,
* *not* pointers * to weightsystems. This has two crucial
diff --git a/qt-models/weightmodel.cpp b/qt-models/weightmodel.cpp
index 020e14c24..7e89f30bf 100644
--- a/qt-models/weightmodel.cpp
+++ b/qt-models/weightmodel.cpp
@@ -94,8 +94,10 @@ void WeightModel::setTempWS(int row, weightsystem_t ws)
tempWS = ws;
// If the user had already set a weight, don't overwrite that
- if (oldWS.weight.grams)
+ if (oldWS.weight.grams && !oldWS.auto_filled)
tempWS.weight = oldWS.weight;
+ else
+ tempWS.auto_filled = true;
}
dataChanged(index(row, TYPE), index(row, WEIGHT));
}
@@ -133,6 +135,7 @@ bool WeightModel::setData(const QModelIndex &index, const QVariant &value, int r
switch (index.column()) {
case WEIGHT:
ws.weight = string_to_weight(qPrintable(vString));
+ ws.auto_filled = false;
int count = Command::editWeight(index.row(), ws, false);
emit divesEdited(count);
return true;