diff --git a/src/blackmisc/blackmiscfreefunctions.cpp b/src/blackmisc/blackmiscfreefunctions.cpp index a5fec8701..8c1a05293 100644 --- a/src/blackmisc/blackmiscfreefunctions.cpp +++ b/src/blackmisc/blackmiscfreefunctions.cpp @@ -272,6 +272,36 @@ int BlackMisc::compareQVariants(const QVariant &v1, const QVariant &v2) } } + // integer types, handling not as double for rounding issues + if (v1.type() == QVariant::Int) + { + int i1 = v1.value(); + int i2 = v2.value(); + if (i1 == i2) return 0; + return i1 < i2 ? -1 : 1; + } + else if (v1.type() == QVariant::UInt) + { + uint i1 = v1.value(); + uint i2 = v2.value(); + if (i1 == i2) return 0; + return i1 < i2 ? -1 : 1; + } + else if (v1.type() == QVariant::LongLong) + { + long long i1 = v1.value(); + long long i2 = v2.value(); + if (i1 == i2) return 0; + return i1 < i2 ? -1 : 1; + } + else if (v1.type() == QVariant::ULongLong) + { + unsigned long long i1 = v1.value(); + unsigned long long i2 = v2.value(); + if (i1 == i2) return 0; + return i1 < i2 ? -1 : 1; + } + // all kind of numeric values if (v1.canConvert()) {