From ed4e7e3fc416831d9a5ff18bae9de2ca715b4f46 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Wed, 8 Jan 2020 09:32:47 +0100 Subject: core/settings: correct signal error prefs.unit = x needs to be after the setters are called, otherwise the setter will not do anything, and result in an inconsistency between the values stored on disk and in prefs.units. Signed-off-by: jan Iversen Signed-off-by: Dirk Hohndel --- core/settings/qPrefUnit.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/core/settings/qPrefUnit.cpp b/core/settings/qPrefUnit.cpp index c4f32490f..d995169d6 100644 --- a/core/settings/qPrefUnit.cpp +++ b/core/settings/qPrefUnit.cpp @@ -46,23 +46,29 @@ void qPrefUnits::set_unit_system(unit_system_values value) { prefs.unit_system = value; if (prefs.unit_system == METRIC) { - prefs.units = SI_units; - // make sure all types are updated when changing set_volume(units::VOLUME::LITER); set_weight(units::WEIGHT::KG); set_length(units::LENGTH::METERS); set_pressure(units::PRESSURE::BAR); set_temperature(units::TEMPERATURE::CELSIUS); - } else if (prefs.unit_system == IMPERIAL) { - prefs.units = IMPERIAL_units; + // this statement need to be AFTER the setters are called + // because it sets all of prefs.units without calling the + // setters + prefs.units = SI_units; + } else if (prefs.unit_system == IMPERIAL) { // make sure all types are updated when changing set_volume(units::VOLUME::CUFT); set_weight(units::WEIGHT::LBS); set_length(units::LENGTH::FEET); set_pressure(units::PRESSURE::PSI); set_temperature(units::TEMPERATURE::FAHRENHEIT); + + // this statement need to be AFTER the setters are called + // because it sets all of prefs.units without calling the + // setters + prefs.units = IMPERIAL_units; } else { prefs.unit_system = PERSONALIZE; } -- cgit v1.2.3-70-g09d2