summaryrefslogtreecommitdiff
path: root/vcl/source/window/builder.cxx
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@suse.cz>2013-07-16 09:40:14 +0200
committerJan Holesovsky <kendy@suse.cz>2013-07-16 09:49:21 +0200
commit16fe20b667b99495fe1dfea8b24c1d93bc6eed68 (patch)
tree11f2fffc6dba30d51059834dda1b2106a4fbe69e /vcl/source/window/builder.cxx
parent7e71abaddf34fdc7d6c324b4cf9110fbb88eaf56 (diff)
widget layout: Take decimal digits into account for MetricBoxes.
Change-Id: I2870dbf9dc1f7fb84adfe81b9be8f4060677e6d0
Diffstat (limited to 'vcl/source/window/builder.cxx')
-rw-r--r--vcl/source/window/builder.cxx20
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;