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;