From 6020fc18d12f843a5d9b4c2a1a1980647c6e4203 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 8 May 2016 11:27:47 +0200 Subject: [PATCH] Scale increment and decimal fields according to cooked unit, so that the decimal and increments provided by meta data still work in the cooked display --- src/FactSystem/FactMetaData.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/FactSystem/FactMetaData.cc b/src/FactSystem/FactMetaData.cc index 5fefc819e..8e9ce20ed 100644 --- a/src/FactSystem/FactMetaData.cc +++ b/src/FactSystem/FactMetaData.cc @@ -596,7 +596,7 @@ int FactMetaData::decimalPlaces(void) const int incrementDecimalPlaces = unknownDecimalPlaces; // First determine decimal places from increment - double increment = this->increment(); + double increment = _rawTranslator(this->increment()).toDouble(); if (!qIsNaN(increment)) { double integralPart; @@ -614,7 +614,16 @@ int FactMetaData::decimalPlaces(void) const if (incrementDecimalPlaces != unknownDecimalPlaces && _decimalPlaces == unknownDecimalPlaces) { actualDecimalPlaces = incrementDecimalPlaces; } else { - actualDecimalPlaces = qMax(_decimalPlaces, incrementDecimalPlaces); + + int settingsDecimalPlaces = _decimalPlaces; + double ctest = _rawTranslator(1.0).toDouble(); + + settingsDecimalPlaces += -log10(ctest); + + settingsDecimalPlaces = qMin(25, settingsDecimalPlaces); + settingsDecimalPlaces = qMax(0, settingsDecimalPlaces); + + actualDecimalPlaces = qMax(settingsDecimalPlaces, incrementDecimalPlaces); } return actualDecimalPlaces; -- 2.22.0