diff options
author | Jan Holesovsky <kendy@suse.cz> | 2013-07-16 09:40:14 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2013-07-16 09:49:21 +0200 |
commit | 16fe20b667b99495fe1dfea8b24c1d93bc6eed68 (patch) | |
tree | 11f2fffc6dba30d51059834dda1b2106a4fbe69e /vcl | |
parent | 7e71abaddf34fdc7d6c324b4cf9110fbb88eaf56 (diff) |
widget layout: Take decimal digits into account for MetricBoxes.
Change-Id: I2870dbf9dc1f7fb84adfe81b9be8f4060677e6d0
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/window/builder.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index c6134c49ee6d..7dd2f3c39710 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -754,6 +754,25 @@ namespace return sUnit; } + int extractDecimalDigits(const OString& sPattern) + { + int nDigits = 0; + bool bAfterPoint = false; + for (sal_Int32 i = 0; i < sPattern.getLength(); ++i) + { + if (sPattern[i] == '.' || sPattern[i] == ',') + bAfterPoint = true; + else if (sPattern[i] == '0') + { + if (bAfterPoint) + ++nDigits; + } + else + break; + } + return nDigits; + } + FieldUnit detectMetricUnit(OString sUnit) { FieldUnit eUnit = FUNIT_NONE; @@ -1199,6 +1218,7 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri MetricBox *pBox = new MetricBox(pParent, nBits); pBox->EnableAutoSize(true); pBox->SetUnit(eUnit); + pBox->SetDecimalDigits(extractDecimalDigits(sPattern)); if (eUnit == FUNIT_CUSTOM) pBox->SetCustomUnitText(OStringToOUString(sUnit, RTL_TEXTENCODING_UTF8)); pWindow = pBox; |